一、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. HearthBuddy中的class276中的地址对应

    2019年09月的 intptr_0 = method_18("mono.dll"); intptr_31 = intptr_0 + 522030; intptr_28 = int ...

  2. unity热更新AssetBundle框架设计_框架篇

    目录 第1 章 : AssetBundle框架整体设计 课时1:实战项目开发AB技术问题分析 10:53 课时2:实战项目开发AB技术解决方案 10:24 课时3:AB框架整体设计方案详解 09:45 ...

  3. AXURE RP8 - 实战手册 网站和APP原型制作案例精粹

    扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop135452397.taobao.com/ 联系店主    

  4. ubuntu18.04 qemu环境搭建【学习笔记】

    一.准备工具 1.1 安装相关工具 sudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential 1. ...

  5. SQL中join和cross join的区别

    SQL中的连接可以分为内连接,外连接,以及交叉连接 . 1. 交叉连接CROSS JOIN 如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积: 举例, ...

  6. You are using the runtime-only build of Vue where the template compiler is not available. Either pre

    在升级脚手架到vue-cli3.0版本的时候出现了这个报错: [Vue warn]: You are using the runtime-only build of Vue where the tem ...

  7. Java基础 println 输出常量的示例

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  8. Composer 安装 Jira API 库

    环境要求: PHP >= 5.5.9 php JsonMapper phpdotenv 安装 下载安装 Composer curl -sS https://getcomposer.org/ins ...

  9. Leetcode: Stream of Characters

    Implement the StreamChecker class as follows: StreamChecker(words): Constructor, init the data struc ...

  10. AS的常见问题

    版本问题 a.Gradle的版本 用于将代码和资源打包生成apk的编译脚本.此版本号究竟是啥得去studio的安装目录下查看b.Gradle插件的版本 com.android.tools.build: ...