1. package pfs.y2017.m11.mq.activemq.demo05;
  2.  
  3. import javax.jms.Connection;
  4. import javax.jms.ConnectionFactory;
  5. import javax.jms.Destination;
  6. import javax.jms.JMSException;
  7. import javax.jms.MessageConsumer;
  8. import javax.jms.Session;
  9.  
  10. import org.apache.activemq.ActiveMQConnection;
  11. import org.apache.activemq.ActiveMQConnectionFactory;
  12.  
  13. public class Consumer {
  14.  
  15. private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
  16.  
  17. private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
  18.  
  19. private static final String BROKEN_URL = ActiveMQConnection.DEFAULT_BROKER_URL;
  20.  
  21. ConnectionFactory factory;
  22.  
  23. Connection connection;
  24.  
  25. Session session;
  26.  
  27. String[] jobs = { "job01", "job02" };
  28.  
  29. public Consumer() throws JMSException {
  30. factory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKEN_URL);
  31. connection = factory.createConnection();
  32. connection.start();
  33. session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  34. }
  35.  
  36. public static void main(String[] args) throws JMSException {
  37. Consumer consumer = new Consumer();
  38. for (String job : consumer.jobs) {
  39. Destination destination = consumer.getSession().createQueue("JOBS." + job);
  40. MessageConsumer messageConsumer = consumer.getSession().createConsumer(destination);
  41. messageConsumer.setMessageListener(new Listener(job));
  42. }
  43. }
  44.  
  45. public Session getSession() {
  46. return session;
  47. }
  48. }
  1. package pfs.y2017.m11.mq.activemq.demo05;
  2.  
  3. import javax.jms.Message;
  4. import javax.jms.MessageListener;
  5. import javax.jms.ObjectMessage;
  6.  
  7. public class Listener implements MessageListener {
  8.  
  9. private String job;
  10.  
  11. public Listener(String job) {
  12. this.job = job;
  13. }
  14.  
  15. public void onMessage(Message message) {
  16. try {
  17. // do something here
  18. System.out.println(job + " id:" + ((ObjectMessage) message).getObject());
  19. } catch (Exception e) {
  20. e.printStackTrace();
  21. }
  22. }
  23.  
  24. }
  1. package pfs.y2017.m11.mq.activemq.demo05;
  2.  
  3. import javax.jms.Connection;
  4. import javax.jms.ConnectionFactory;
  5. import javax.jms.Destination;
  6. import javax.jms.JMSException;
  7. import javax.jms.Message;
  8. import javax.jms.MessageProducer;
  9. import javax.jms.ObjectMessage;
  10. import javax.jms.Session;
  11.  
  12. import org.apache.activemq.ActiveMQConnection;
  13. import org.apache.activemq.ActiveMQConnectionFactory;
  14.  
  15. public class Publisher {
  16.  
  17. private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
  18.  
  19. private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
  20.  
  21. private static final String BROKEN_URL = ActiveMQConnection.DEFAULT_BROKER_URL;
  22.  
  23. ConnectionFactory factory;
  24.  
  25. Connection connection;
  26.  
  27. Session session;
  28.  
  29. MessageProducer producer;
  30.  
  31. String[] jobs= {"job01","job02"};
  32.  
  33. public Publisher() throws JMSException {
  34. factory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKEN_URL);
  35. connection = factory.createConnection();
  36. connection.start();
  37. session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  38. producer = session.createProducer(null);
  39. }
  40.  
  41. public void sendMessage() throws JMSException {
  42. for (int i = 0; i < jobs.length; i++) {
  43. String job = jobs[i];
  44. Destination destination = session.createQueue("JOBS." + job);
  45. Message message = session.createObjectMessage(i);
  46. System.out.println("Sending: id: " + ((ObjectMessage) message).getObject() + " on queue: " + destination);
  47. producer.send(destination, message);
  48. }
  49. }
  50.  
  51. public static void main(String[] args) throws JMSException {
  52. Publisher publisher = new Publisher();
  53. for (int i = 0; i < 10; i++) {
  54. publisher.sendMessage();
  55. System.out.println("Published " + i + " job messages");
  56. try {
  57. Thread.sleep(1000);
  58. } catch (InterruptedException e) {
  59. e.printStackTrace();
  60. }
  61. }
  62. publisher.close();
  63. }
  64.  
  65. public void close() throws JMSException {
  66. if (connection != null) {
  67. connection.close();
  68. }
  69. }
  70. }

ActiveMQ(五) 转的更多相关文章

  1. 学习ActiveMQ(五):activemq的五种消息类型和三种监听器类型

    一.前面我们一直发送的是字符串类型,其实activemq一共支持五种消息类型: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者 ...

  2. Linux 安装ActiveMQ(使用Mac远程访问)

    阅读本文需要安装JDK 一 ActiveMQ简介 activemq是用java语言编写的一款开源消息总线 activemq是apache出品 activemq消息的传递有两种类型 一种是点对点: 即一 ...

  3. 高级Java面试总结1

    一.三大框架方面问题   1.Spring 事务的隔离性,并说说每个隔离性的区别 解答:Spring事务详解 2.Spring事务的传播行为,并说说每个传播行为的区别 解答:Spring事务详解 3. ...

  4. 品优购商城项目(五)消息中间件 ActiveMQ

    消息中间件用于降低各个项目模块的耦合,适用于不需要等待返回消息才能进入下一个业务环节的模块,以及实时要求性不高的业务模块. 一.JMS JMS(Java Messaging Service)是Java ...

  5. ActiveMQ第五弹:增加ReDelivery功能

    在使用Message Queue的过程中,总会由于种种原因而导致消息失败.一个经典的场景是一个生成者向Queue中发消息,里面包含了一组邮件地址和邮件内容.而消费者从Queue中将消息一条条读出来,向 ...

  6. JMS学习(五)--ActiveMQ中的消息的持久化和非持久化 以及 持久订阅者 和 非持久订阅者之间的区别与联系

    一,消息的持久化和非持久化 ①DeliveryMode 这是传输模式.ActiveMQ支持两种传输模式:持久传输和非持久传输(persistent and non-persistent deliver ...

  7. 消息中间件-activemq实战整合Spring之Topic模式(五)

    这一节我们看一下Topic模式下的消息发布是如何处理的. applicationContext-ActiveMQ.xml配置: <?xml version="1.0" enc ...

  8. JMS学习五(ActiveMQ的本地事务)

    1.ActiveMQ的本地事务 在一个JMS客户端,可以使用本地事务来组合消息的发送和接收.JMS Session接口提供了commit和rollback方法.事务提交意味着生产的所有消息被发送,消费 ...

  9. ActiveMQ 笔记(五)ActiveMQ的传输协议

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 面试思考题: 默认的61616端口如何更改 你生产上的连接协议如何配置的?使用tcp吗? 一.Activ ...

随机推荐

  1. leetcode刷题——排序

    知识点 CS-Notes 备忘-必备算法 题目 冒泡排序 插入排序 归并排序 选择排序 快速排序 希尔排序 堆排序 桶排序 题解 CS-Notes awesome-algorithm

  2. Python模块--time&datetime

    一.Python中时间的表示方式 1.时间戳  如 1552623413.043036 2.格式化的时间字符串  如 2015-12-02 3.struct_time  是一个元组 共有九个元素 二. ...

  3. 00030_ArrayList集合

    1.数组可以保存多个元素,但在某些情况下无法确定到底要保存多少个元素,此时数组将不再适用,因为数组的长度不可变 2.JDK中提供了一系列特殊的类,这些类可以存储任意类型的元素,并且长度可变,统称为集合 ...

  4. ntdsutil 清理弃用服务器-----待验证

    例子是这样的: 一个森林里有两个树,mm.com和cc.com,分别有dc www.mm.com和vdc.cc.com, cc.com域的控制器崩溃,不想恢复,要彻底删除这个域,由于vdc.cc.co ...

  5. 在xcode上把你的app多语言国际化(NSLocalizedString)

    1.到project->info->localizations   下面的加号,添加你需要的语言 千万不要删除  base 否虽然我不知道有什么用,我是删了整个storyboard没了,很 ...

  6. selenium之定位以及切换frame

    总有人看不明白,以防万一,先在开头大写加粗说明一下: frameset不用切,frame需层层切! 很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,用firebug ...

  7. python os模块部分摘录

    转自:http://www.cnblogs.com/yigehundan/p/6379586.html python 路径相关的函数os.listdir(dirname):列出dirname下的目录和 ...

  8. 【Luogu】P2953牛的数字游戏(博弈论)

    题目链接 自己乱搞……然后一遍AC啦! 思路从基本的必胜态和必败态开始分析.我们把减去最大数得到的数叫作Max,减去最小数得到的数叫作Min. 那么开始分析. 一.0是必败态. 这个没法解释.题目就这 ...

  9. 【Luogu】P1040加分二叉树(区间DP)

    题目链接 区间DP,因为中序遍历的性质:区间[l,r]的任何一个数都可以是该区间的根节点. 更新权值的时候记录区间的根节点,最后DFS输出. 见代码. #include<cstdio> # ...

  10. VB6 post图片

    在VBA中怎样用XMLhttp 模拟http上传二进制文件? https://www.zhihu.com/question/40974557 作者:付杨 链接:https://www.zhihu.co ...