摘要:点对点的发送消息,使用消息队列Queue。每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列,接收者在成功接收消息之后需向队列应答成功。

引入三个jar包,这些jar包在activeMQ的安装包中都有:
geronimo-j2ee-management_1.1_spec-1.0.1.jar
geronimo-jms_1.1_spec-1.1.1.jar
activemq-core-5.5.0.jar

消息生产者:

package com.ds.test.activemq.queue;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;public class Sender {private static final int SEND_NUMBER = 5;public static void main(String[] args) {// ConnectionFactory :连接工厂,JMS 用它创建连接ConnectionFactory connectionFactory;// Connection :JMS 客户端到JMS Provider 的连接Connection connection = null;// Session: 一个发送或接收消息的线程Session session;// Destination :消息的目的地;消息发送给谁.Destination destination;// MessageProducer:消息发送者MessageProducer producer;// TextMessage message;// 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jarconnectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://localhost:61616");try {connection = connectionFactory.createConnection();connection.start();session = connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);destination = session.createQueue("FirstQueue");producer = session.createProducer(destination);sendMessage(session, producer);session.commit();} catch (Exception e) {e.printStackTrace();} finally {try {if (null != connection)connection.close();} catch (Throwable ignore) {}}}public static void sendMessage(Session session, MessageProducer producer)throws Exception {for (int i = 1; i <= SEND_NUMBER; i++) {TextMessage message = session.createTextMessage("ActiveMq 发送的消息" + i);// 发送消息到目的地方System.out.println("发送消息:" + "ActiveMq 发送的消息" + i);producer.send(message);}}
}

消息消费者:

package com.ds.test.activemq.queue;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;public class Receiver {public static void main(String[] args) {// ConnectionFactory :连接工厂,JMS 用它创建连接ConnectionFactory connectionFactory;// Connection :JMS 客户端到JMS Provider 的连接Connection connection = null;// Session: 一个发送或接收消息的线程Session session;// Destination :消息的目的地;消息发送给谁.Destination destination;// 消费者,消息接收者MessageConsumer consumer;connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://localhost:61616");try {connection = connectionFactory.createConnection();connection.start();session = connection.createSession(Boolean.FALSE,Session.AUTO_ACKNOWLEDGE);destination = session.createQueue("FirstQueue");consumer = session.createConsumer(destination);while (true) {//接收在指定的超时间隔内到达的下一个消息TextMessage message = (TextMessage) consumer.receive(1000*100);if (null != message) {System.out.println("收到消息" + message.getText());} else {break;}}} catch (Exception e) {e.printStackTrace();} finally {try {if (null != connection)connection.close();} catch (Throwable ignore) {}}}
}

查看消息情况: http://localhost:8161/admin/queues.jsp

ActiveMQ(二)———使用Quene来发送消息相关推荐

  1. ibm linux mq 发送消息_RabbitMq、ActiveMq、Kafka和Redis做Mq对比

    一.RabbitMq RabbitMQ是一个Advanced Message Queuing Protocol(AMQP)的开源实现,由以高性能.可伸缩性出名的Erlang写成.RabbitMQ Se ...

  2. activeMQ高并发发送消息异常解决方法

    高并发发送消息异常解决方法: 现象:使用10个线程每100ms发送一条消息,大约3000多条后,出现异常,所有线程停 止: javax.jms.JMSException:Could not conne ...

  3. ActiveMQ入门-发送消息机制的介绍

    消息队列的几种角色:消息队列是系统之间发消息的,会有消息的发送者(生产者),会有消息的接受者(消费者),还有一个用来存储并且发送消息的容器,这个容易叫消息队列 ActiveMQ发消息的方式有两种:Qu ...

  4. php redis微信发红包,高阶篇二 使用Redis队列发送微信模版消息

    # 高阶篇二 使用Redis队列发送微信模版消息 > 此命令行执行任务的方法类比较复杂 他需要命令行运行才会有效 > 命令行源码以及创建方法 参见上节 https://www.kanclo ...

  5. ActiveMQ使用spring JmsTemplate发送消息(一)

    下载地址:http://activemq.apache.org/download-archives.html 解压 启动bin\activemq.bat 生产者接口: public interface ...

  6. ActiveMQ中消费者是如何接收消息的(二)

    上篇文章大致讲述了同步消费者和异步消费者接收消息的异同(详见<ActiveMQ中消费者是如何接收消息的(一)>http://manzhizhen.iteye.com/blog/209413 ...

  7. springBoot使用activeMQ发送消息,错误This class is not trusted to be serialized as ObjectMessage payload.

    原因是因为他不支持 对象作为消息进行发送.但是他支持string,byte,序列化,数字类型. 所以将对象转换为byte数组,在转换为对象解析即可 附上相关转换代码. 转换类的名字我叫做DataPro ...

  8. Redis源码解析:21sentinel(二)定期发送消息、检测主观下线

    六:定时发送消息 哨兵每隔一段时间,会向其所监控的所有实例发送一些命令,用于获取这些实例的状态.这些命令包括:"PING"."INFO"和"PUBLI ...

  9. java中子线程与主线程通信_Android笔记(三十二) Android中线程之间的通信(四)主线程给子线程发送消息...

    之前的例子都是我们在子线程(WorkerThread)当中处理并发送消息,然后在主线程(UI线程)中获取消息并修改UI,那么可以不可以在由主线程发送消息,子线程接收呢?我们按照之前的思路写一下代码: ...

最新文章

  1. vue父组件调用子组件的方法
  2. IBatis手动刷新缓存
  3. 这 9 个 Java 开源项目 yyds,你知道几个?
  4. MVP on Android
  5. PHP配置虚机权限不足的问题
  6. php mysql 分组 分页_简单的PHP+Mysql实现分页
  7. Nacos源码NacosServiceRegistryAutoConfiguration
  8. 2014年科目三智能化考试十大必知事项
  9. java迭代器_74.Java迭代器
  10. 用小乌龟git解决冲突之后,再提交,出现自己没用动过的文件
  11. linux hotplug 机制,佐须之男的博客- 跟着佐大学Lede/OpenWrt开发入门培训班讲义-18 OpenWrt hotplug 机制分析...
  12. 怎么把mp3转换成wav?
  13. 网络系统管理赛项之Debian七. 2021年全国职业院校技能大赛将挑选各省1人或1组队伍参赛
  14. OFDM专题之如何计算OFDM一个符号的功率,功率谱密度
  15. kaldi教程_赠书 | 全球稀缺的Kaldi学习资料,《Kaldi语音识别实战》给补上了
  16. CDMA移动通信网的关键技术(转)
  17. LeetCode 9. 回文数 Palindrome Number
  18. 数据分析师是青春饭吗?年龄影响很大吗?
  19. jinja2中if和for的使用
  20. element plus 引入icon

热门文章

  1. 99%游戏开发者都不知道的游戏运营词汇
  2. 强烈推荐,B站最强学习资源汇总(数据科学,机器学习,python)
  3. 使用EasyDarwin + ffmpeg 搭建流媒体服务器,实现多台智能电视同步播放宣传视频
  4. java try的用法_Java try和catch的使用
  5. 如何从Set中任意(随机)取出一个元素
  6. 计算机科学计算课后题答案,计算机系统习题及答案.doc
  7. Docker ~ 从入门到实践
  8. SQL server 2012 附加数据库
  9. 有没有会的指点一下啊
  10. “520”学历过滤不出爱情,论天津专升本对另一半爱情的重要性