1. 新建一个名为JMSActiveMQMapMessage的Java项目, 同时拷入相关jar包

2. 编辑QueueMapMessageProducer.java

package com.jms.activemq.qmm;import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;public class QueueMapMessageProducer {// 默认连接用户名private static final String dftUsr = ActiveMQConnection.DEFAULT_USER;// 默认用户密码private static final String dftPwd = ActiveMQConnection.DEFAULT_PASSWORD;// 默认连接地址private static final String dftUrl = ActiveMQConnection.DEFAULT_BROKER_URL;// 队列名称private static final String queueName = "queueMapMsg";public static void main(String[] args) {// 1. 创建一个连接工厂QueueConnectionFactory cf = new ActiveMQConnectionFactory(dftUsr, dftPwd, dftUrl);// 连接对象QueueConnection conn = null;// 会话对象QueueSession session = null;try {// 2. 创建连接conn = cf.createQueueConnection();// 3. 启动连接conn.start();// 4. 创建会话session = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);// 5. 创建消息目的地。如果是点对点, 那么它的实现是Queue; 如果是订阅模式, 那它的实现是Topic。这里我们创建一个名为queueMapMsg的消息队列。Queue queue = session.createQueue(queueName);// 6. 消息生产者QueueSender sender = session.createSender(null);// 7. 创建文本消息和发送消息for(int i = 0; i < 2; i++) {MapMessage message = session.createMapMessage();message.setLong("id", 100000000000L + i);message.setString("name", "lisi");sender.send(queue, message);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}} catch (JMSException e) {e.printStackTrace();} finally {try {if (session != null) {session.close();}} catch (JMSException e1) {e1.printStackTrace();} finally {if (conn != null) {try {conn.close();} catch (JMSException e) {e.printStackTrace();}}}}}
}

3. 编辑QueueMapMessageConsumer.java

package com.jms.activemq.qmm;import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;public class QueueMapMessageConsumer {// 默认连接用户名private static final String dftUsr = ActiveMQConnection.DEFAULT_USER;// 默认用户密码private static final String dftPwd = ActiveMQConnection.DEFAULT_PASSWORD;// 默认连接地址private static final String dftUrl = ActiveMQConnection.DEFAULT_BROKER_URL;// 队列名称private static final String queueName = "queueMapMsg";public static void main(String[] args) {// 1. 创建一个连接工厂QueueConnectionFactory cf = new ActiveMQConnectionFactory(dftUsr, dftPwd, dftUrl);// 连接对象QueueConnection conn = null;// 会话对象QueueSession session = null;try {// 2. 创建连接conn = cf.createQueueConnection();// 3. 创建会话session = conn.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);// 4. 创建消息目的地。如果是点对点, 那么它的实现是Queue; 如果是订阅模式, 那它的实现是Topic。这里我们创建一个名为queueMapMsg的消息队列。Queue queue = session.createQueue(queueName);// 5. 消息消费者QueueReceiver receiver = session.createReceiver(queue);// 6. 启动连接, 准备开始接收消息conn.start();// 7. 接收消息MapMessage message = (MapMessage) receiver.receive(1000 * 3);System.out.println("接收: id = " + message.getLong("id") + ", name = " + message.getString("name"));MapMessage message1 = (MapMessage) receiver.receive(1000 * 3);System.out.println("接收: id = " + message1.getLong("id") + ", name = " + message1.getString("name"));// 8. 客户端主动确认消息已成功接收。进行了一次确认, 却确认了2条消息的消费, 因为这种确认方式是会话级别的。message.acknowledge(); System.out.println("JMSDestination = " + message.getJMSDestination() + ", JMSDeliveryMode = " + message.getJMSDeliveryMode()+ ", JMSExpiration = " + message.getJMSExpiration() + ", JMSPriority = " + message.getJMSPriority()+ ",\r\nJMSMessageID = " + message.getJMSMessageID() + ", JMSTimestamp = " + message.getJMSTimestamp()+ ", JMSCorrelationID = " + message.getJMSCorrelationID() + ",\r\nJMSReplyTo = " + message.getJMSReplyTo()+ ", JMSType = " + message.getJMSType() + ", JMSRedelivered = " + message.getJMSRedelivered());} catch (JMSException e) {e.printStackTrace();} finally {try {if (session != null) {session.close();}} catch (JMSException e1) {e1.printStackTrace();} finally {if (conn != null) {try {conn.close();} catch (JMSException e) {e.printStackTrace();}}}}}
}

4. 运行QueueMapMessageProducer.java

5. 注释掉确认消息代码, 运行QueueMapMessageConsumer.java

6. 放开确认消息代码, 再次运行QueueMapMessageConsumer.java

008_Queue消息模式发送映射消息相关推荐

  1. 006_Topic消息模式发送对象消息

    1. 新建一个名为JMSActiveMQObjectMessage的Java项目, 同时拷入相关jar包 2. 编辑User.java package com.jms.activemq.tom;imp ...

  2. 005_Queue消息模式发送字节消息

    1. 新建一个名为JMSActiveMQBytesMessage的Java项目, 同时拷入相关jar包 2. 编辑QueueBytesMessageProducer.java package com. ...

  3. 004_Queue消息模式发送文本消息

    1. 新建一个名为JMSActiveMQTextMessage的Java项目, 同时拷入相关jar包 2. 相关jar包可以在apache-activemq-5.16.1\lib目录下找到 3. 编辑 ...

  4. 微信服务号模版消息重复发送或消息接收不到的解决方案

    微信服务号模版消息重复发送或消息接收不到的解决方案 问题描述 解决思路 问题描述 前段时间开发的服务号,有一个功能是主动向用户推送消息,经查看文档后,发现模版消息可以实现,于是按照文档向微信申请消息模 ...

  5. SpringBoot高级-消息-RabbitTemplate发送接受消息序列化机制

    引入了spring-boot-starter-amqp模块,他引入了spring-messaging模块,包括引入了spring-rabbit模块,怎么配置使用呢,<dependency> ...

  6. 微信公众平台开发-消息管理-发送模板消息

    一.模板说明 模板消息是在特定服务场景中向粉丝发送的消息,例如:信用卡刷卡通知,商品购买成功通知.不同的模板有不同的风格,某些字段可以由你来填充自己的内容(同时设定颜色),从而形成自己的消息.微信公众 ...

  7. 微信公众号开发-----微信模板消息接口-----发送模板消息

    发送模板消息 接口调用请求说明 http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/template/send?access_token= ...

  8. java 发送qq消息_php发送qq消息

    function fcontents($url,$cookie){ $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_seto ...

  9. 非模态对话框的销毁及消息的发送顺序

    非模态对话框的销毁( 2010-12-28 19:21:33|  分类: vc |  标签: |字号大中小 订阅 void CTestDlg::OnCancel() { DestroyWindow() ...

最新文章

  1. 如果理解运算符和各类数值的布尔值
  2. linux elf格式 全局指针表got call跳转表plt 简介
  3. Deep Belief Network简介——本质上是在做逐层无监督学习,每次学习一层网络结构再逐步加深网络...
  4. 《CCNP SWITCH 300-115学习指南》——导读
  5. 060_Unicode字符编码
  6. centos FTP服务器的架设和配置
  7. python 堆栈溢出_python - 使用CFFI释放内存时,“ MemoryError:堆栈溢出”是什么意思? - 堆栈内存溢出...
  8. 基于selenium实现12306的登录操作(图形验证码识别)
  9. Django基础,Day3 - 编写 django admin
  10. RocketMQ消息重试机制
  11. Elasticsearch就这么简单
  12. VxWorks操作系统
  13. 自制胎教音乐---太阳当头照
  14. sqlserver触发器如何将一个库中的数据插入到另外一个库中
  15. 一文带你实现RPC框架
  16. Sublime Merge for Mac(git客户端软件)
  17. java文件读取路径_java文件读取路径问与答
  18. 【VS2015】关于VS2015如何运行的问题
  19. [私人] T460p上运行orbit_js报ERR_NO_ICU的问题
  20. 各个浏览器url带参限制

热门文章

  1. 创业做什么好?先学习精英式创业从平庸到卓越
  2. 网管必备的十大网络安全测试工具
  3. 【BZOJ】3390: [Usaco2004 Dec]Bad Cowtractors牛的报复(kruskal)
  4. haproxy中acl的与或非三种規則写法
  5. 第一次有人把“分布式事务”讲的这么简单明了
  6. 广域网优化产品的5大应用场景—Vecloud
  7. MPLS转发过程中涉及的相关概念—Vecloud微云
  8. Citus数据分片分布研究(二 副本与故障)
  9. Postgresql中文排序
  10. 重绘和回流----降低回流减少性能影响