一、ActiveMq想要实现必备的六要素(基于jms)
  //链接工厂。用于创建链接
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"); 传目的地名称 }
 
 
五、对象类型信息在消息队列中的存取
 
 
一 、 生成者(和文本唯一的不同就是消息的载体对象类型是Object的)
// 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"); }
 
 
六 、 ActiveMq的监听器
就是把第六步给改了,生成一个受监听的Message对象
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)的更多相关文章

  1. ActiveMQ Advisory Message

    http://activemq.apache.org/advisory-message.html ActiveMQ broker 内部维持了一些 topic,保存了一些系统信息,客户端可以订阅这些 t ...

  2. 分布式-信息方式-ActiveMQ的Message dispatch高级特性之(指针) Message cursors

    Message dispatch高级特性之 Message cursors概述            ActiveMQ发送持久消息的典型处现方式是:当消息的消费者准备就绪时,消息发送系统把存储的 消息 ...

  3. ActiveMQ(li)

    一.ActiveMQ 首先,ActiveMQ不是一个框架,它不是struct,webx,netty这种框架,它更像是tomcat服务器,因为你使用它之前必须启动它,activeMQ和JMS的关系有点类 ...

  4. 工业物联网或系统集成中应用消息队列(ActiveMQ,C#的demo)的场景全面分析

    1.[连载]<C#通讯(串口和网络)框架的设计与实现> 2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 2.应用SuperIO(SIO)和开源跨平台物联网框 ...

  5. C++ activemq CMS 学习笔记.

    很早前就仓促的接触过activemq,但当时太赶时间.后面发现activemq 需要了解的东西实在是太多了. 关于activemq 一直想起一遍文章.但也一直缺少自己的见解.或许是网上这些文章太多了. ...

  6. activemq的几种基本通信方式总结

    简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择.这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨.activem ...

  7. ActiveMQ第二弹:使用Spring JMS与ActiveMQ通讯

    本文章的完整代码可从我的github中下载:https://github.com/huangbowen521/SpringJMSSample.git 上一篇文章中介绍了如何安装和运行ActiveMQ. ...

  8. javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  9. activemq安装与简单消息发送接收实例

    安装环境:Activemq5.11.1, jdk1.7(activemq5.11.1版本需要jdk升级到1.7),虚拟机: 192.168.147.131 [root@localhost softwa ...

随机推荐

  1. CENTOS7安装OPENSSL

    CENTOS7安装OPENSSL yum install openssl yum install openssl-devel

  2. 如何写一个webService接口

    第一次写接口的时候,感觉太过笼统,压根不知道接口是个什么东东,,后来自己也查了好多资料,才发现其实接口可以就认为是一个方法,自己多写几种以后就会发现挺简单的,自己整理了一下资料,纯属增强自己的记忆,也 ...

  3. Qt Resource System Qt资源体系(qrc rcc)

    Qt资源体系采用平台独立机制来存储应用程序执行时的二进制文件.这种机制在应用程序需要一些确定的文件(图标.翻译文件等等)而且又不想冒丢失文件的风险时是有用的. 资源体系依赖于 qmake, rcc ( ...

  4. SQL Server 查找空值

    需要查找某一列为空的数据 )NULL不能用 “=”运算符 )NULL不支持+-*/ <> )不同的函数对NULL的支持不一样,使用前要测试,不能靠猜,不能凭经验

  5. Tosca case status PLANNED,IN-WORK,COMPLETED 对应的图标

    #PLANNED #IN-WORK #COMPLETED

  6. Apache 使用ssl模块配置HTTPS(Centos7 httpd2.4.6)

    根据原文:http://blog.csdn.net/ithomer/article/details/50433363改编 Web服务器在默认情况下使用HTTP,这是一个纯文本的协议.正如其名称所暗示的 ...

  7. CentOS / RHEL 7 更改时区

    timedatectl 是 RHEL7 上的一项新功能.它可用于查询和更改系统时钟及其设置. 按照以下步骤将时区更改为中国.(以root用户身份执行以下命令). 1.使用以下命令列出所有可用的时区.你 ...

  8. Android利用canvas画各种图形

    Android利用canvas画各种图形(点.直线.弧.圆.椭圆.文字.矩形.多边形.曲线.圆角矩形) 本文链接:https://blog.csdn.net/rhljiayou/article/det ...

  9. Linux_CentOS软件安装yum

    在 Linux 操作系统下,几乎所有的软件均通过 RPM 进行安装.卸载及管理等操作.RPM 的 全称为 Redhat Package Manager ,是由 Redhat 公司提出的,用于管理 Li ...

  10. opencv4 mask_rcnn模型调(c++)

    昨天有人问我关于调用mask_rcnn模型的问题,忽然想到最近三个月都没用opencv调用训练好的mask_rcnn模型了,今晚做个尝试,所以重新编译了 opencv4,跑个案例试试 #include ...