ActiveMQ处理Message(String -javabean)
//链接工厂。用于创建链接
private ConnectionFactory factory; //用于访问Mq的链接,由链接工厂创建
private Connection connection; //消息队列的一次持久的有状态的会话,由链接创建
private Session session; //本次访问activeMq队列的目的地(我觉得是别名,你放数据的队列的名字),由会话创建
private Destination destination; //消息的生成者,会话中消息就是由他生成的。由session创建
private MessageProducer producer; 或者// 消息接收方 private MessageConsumer consumer; //消息,消息在传递中的载体可以由session创建,也可以通过session从ActiveMq中获取
private Message message;
public void sendMsgToMq(String msg) { 传个要发送到队列的信息进来 try{
/**
* 1、实例化链接工厂
*
* ActiveMQConnectionFactory - 由ActiveMQ实现的ConnectionFactory接口实现类.
* 构造方法: public ActiveMQConnectionFactory(String userName, String password, String brokerURL)
* userName:用户名 默认admin
* password:密码 默认admin
* brokerURL:activemq服务的地址 消息服务的端口:61616 管理控制台的端口:8161
* tcp协议 tcp://localhost:61616
*/
factory = new org.apache.activemq.ActiveMQConnectionFactory("admin", "admin","tcp://localhost:61616");
//2.创建连接
connection = factory.createConnection();
connection.start();
/**
* 3、创建会话
* 方法 - connection.createSession(boolean transacted, int acknowledgeMode);
*
* transacted 可选值 true | false
* 当值为true,第二个参数失效 ;读取消息之后,事物需求手动提交 session.commit();
* 当值为false,表示启用消息确认机制,即第二个参数起作用
*
* acknowledgeMode 消息确认机制 可选值:
* Session.AUTO_ACKNOWLEDGE - 自动确认消息机制 一般选这个
* Session.CLIENT_ACKNOWLEDGE - 客户端确认消息机制
* Session.DUPS_OK_ACKNOWLEDGE - 有副本的客户端确认消息机制
*/
session = connection.createSession(false, session.AUTO_ACKNOWLEDGE);
//4. 创建目的地, 目的地命名即队列命名, 消息消费者需要通过此命名访问对应的队列
destination = session.createQueue("text-msg");
// 5. 创建消息生成者, 创建的消息生成者与某目的地对应, 即方法参数目的地.
producer = session.createProducer(destination);
//6 .创建消息对象 创建一个文本消息, 此消息对象中保存要传递的文本数据.
message = session.createTextMessage(msg); //createTextMessage 因为是文本信息
//7.将消息对象发送到队列
producer.send(message); } catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(null!=producer) {
try {
producer.close();
} catch (JMSException e) {
// TODO Auto-generated catch block 关闭资源
e.printStackTrace();
}
}
if(session!=null) { try {
session.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
if (connection!=null) {
try {
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public void sendMsgToMq(String msg) { 传个要发送到队列的信息进来 try{
/**
* 1、实例化链接工厂
*
* ActiveMQConnectionFactory - 由ActiveMQ实现的ConnectionFactory接口实现类.
* 构造方法: public ActiveMQConnectionFactory(String userName, String password, String brokerURL)
* userName:用户名 默认admin
* password:密码 默认admin
* brokerURL:activemq服务的地址 消息服务的端口:61616 管理控制台的端口:8161
* tcp协议 tcp://localhost:61616
*/
factory = new org.apache.activemq.ActiveMQConnectionFactory("admin", "admin","tcp://localhost:61616");
//2.创建连接
connection = factory.createConnection();
connection.start();
/**
* 3、创建会话
* 方法 - connection.createSession(boolean transacted, int acknowledgeMode);
*
* transacted 可选值 true | false
* 当值为true,第二个参数失效 ;读取消息之后,事物需求手动提交 session.commit();
* 当值为false,表示启用消息确认机制,即第二个参数起作用
*
* acknowledgeMode 消息确认机制 可选值:
* Session.AUTO_ACKNOWLEDGE - 自动确认消息机制 一般选这个
* Session.CLIENT_ACKNOWLEDGE - 客户端确认消息机制
* Session.DUPS_OK_ACKNOWLEDGE - 有副本的客户端确认消息机制
*/
session = connection.createSession(false, session.AUTO_ACKNOWLEDGE);
//4. 创建目的地, 目的地命名即队列命名, 消息消费者需要通过此命名访问对应的队列
destination = session.createQueue("text-msg");
// 5. 创建消息生成者, 创建的消息生成者与某目的地对应, 即方法参数目的地.
producer = session.createProducer(destination);
//6 .创建消息对象 创建一个文本消息, 此消息对象中保存要传递的文本数据.
message = session.createTextMessage(msg); //createTextMessage 因为是文本信息
//7.将消息对象发送到队列
producer.send(message); } catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(null!=producer) {
try {
producer.close();
} catch (JMSException e) {
// TODO Auto-generated catch block 关闭资源
e.printStackTrace();
}
}
if(session!=null) { try {
session.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
if (connection!=null) {
try {
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
@Test
/**
* 发送文本的测试
*/
public void sendMsgtoMqTest() {
TextMessageProducer textProducer = new TextMessageProducer();
textProducer.sendMsgToMq("eeesssss"); 传文本信息进去 } /**
* 接受文本的测试
*/
@Test
public void reciMsgToMqTest() { TextMessageConsumer textConsumer = new TextMessageConsumer(); textConsumer.recieverFromMq("text-msg"); 传目的地名称 }
// 5. 消息的生成者处理者
message = session.createObjectMessage(order); ------------> 文本的 message = session.createTextMessage(msg);
message = consumer.receive();
if (null != message) {
ObjectMessage obj = (ObjectMessage) message; -----------》 强转的类型不同TextMessage msg = (TextMessage) message;
Order order = (Order) obj.getObject();
}
/**
* 发送一个对象到消息队列中
*/
@Test
public void sendObjToMq() {
ObjectMessageProducer objProducer = new ObjectMessageProducer();
Order order = new Order();
order.setInfo("33333");
order.setOrderId(1L);
order.setPrice(600f); objProducer.sendObjToMq(order); ----------》发送一个对象 }
/**
* 从消息队列中取一个对象信息
*/
@Test
public void receiveObjFromMq() { ObjectMessageConsumer objConsumer = new ObjectMessageConsumer();
objConsumer.recieverObjFromMq("aaa"); }
consumer.setMessageListener(new MessageListener() { @Override
public void onMessage(Message message) {
// TODO Auto-generated method stub
//将消息载体转成对象消息载体
ObjectMessage objMessage = (ObjectMessage) message;
try { //在对象消息载体中获取对象
Order order = (Order) objMessage.getObject();
System.out.println("id:" + order.getOrderId() + "价格:" + order.getPrice() + "详细信息" + order.getInfo()); } catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
});
ActiveMQ处理Message(String -javabean)的更多相关文章
- ActiveMQ Advisory Message
http://activemq.apache.org/advisory-message.html ActiveMQ broker 内部维持了一些 topic,保存了一些系统信息,客户端可以订阅这些 t ...
- 分布式-信息方式-ActiveMQ的Message dispatch高级特性之(指针) Message cursors
Message dispatch高级特性之 Message cursors概述 ActiveMQ发送持久消息的典型处现方式是:当消息的消费者准备就绪时,消息发送系统把存储的 消息 ...
- ActiveMQ(li)
一.ActiveMQ 首先,ActiveMQ不是一个框架,它不是struct,webx,netty这种框架,它更像是tomcat服务器,因为你使用它之前必须启动它,activeMQ和JMS的关系有点类 ...
- 工业物联网或系统集成中应用消息队列(ActiveMQ,C#的demo)的场景全面分析
1.[连载]<C#通讯(串口和网络)框架的设计与实现> 2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 2.应用SuperIO(SIO)和开源跨平台物联网框 ...
- C++ activemq CMS 学习笔记.
很早前就仓促的接触过activemq,但当时太赶时间.后面发现activemq 需要了解的东西实在是太多了. 关于activemq 一直想起一遍文章.但也一直缺少自己的见解.或许是网上这些文章太多了. ...
- activemq的几种基本通信方式总结
简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择.这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨.activem ...
- ActiveMQ第二弹:使用Spring JMS与ActiveMQ通讯
本文章的完整代码可从我的github中下载:https://github.com/huangbowen521/SpringJMSSample.git 上一篇文章中介绍了如何安装和运行ActiveMQ. ...
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- activemq安装与简单消息发送接收实例
安装环境:Activemq5.11.1, jdk1.7(activemq5.11.1版本需要jdk升级到1.7),虚拟机: 192.168.147.131 [root@localhost softwa ...
随机推荐
- 做动画animation--matplotlib--python2和3通用代码
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_42053726/artic ...
- nrm -- 一键切换npm源
0. 背景 先描述一下没有nrm时我们是怎样使用npm源的 查看npm源地址,终端中输入 npm config list 可以看到npm源 metrics-registry = "https ...
- 回声消除(AEC)原理
一.前言 因为工作的关系,笔者从2004年开始接触回声消除(Echo Cancellation)技术,而后一直在某大型通讯企业从事与回声消除技术相关的工作,对回声消除这个看似神秘.高端和难以理解的技术 ...
- 文章后面的QA或FAQ
QA:question&answer FAQ: Frequently Asked Questions的缩写,中文意思就是“经常问到的问题”
- Error-JavaScript-SCRIPT5007: 无法获取未定义或 null 引用的属性“style”
ylbtech-Error-JavaScript-SCRIPT5007: 无法获取未定义或 null 引用的属性“style” 1.返回顶部 - document.getElementById(&qu ...
- C++11使用make_shared的优势和劣势
Why Make_shared ? C++11 中引入了智能指针, 同时还有一个模板函数 std::make_shared 可以返回一个指定类型的 std::shared_ptr, 那与 std::s ...
- Flutter TextField详解
原文地址:https://www.jianshu.com/p/54419a143d70 实现TextField说简单也简单,说有坑,坑也不小,下面从易到难介绍一下使用 1.最简单的就是无参数调用构造方 ...
- iOS popToViewController具体用法
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIn ...
- BladeX部署说明(win7)
一:安装jdk-8u221-windows-x64 二:安装Nacos,解压nacos-server-1.0.0,运行bin目录下的startup.cmd,成功可以用浏览器访问:localhost:8 ...
- 【物联网】传感器+wifi传输+回复+显示
https://www.jianshu.com/p/cb0274d612b5 https://timgsa.baidu.com/timg?image&quality=80&size=b ...