zoukankan      html  css  js  c++  java
  • ActiveMQ之Queue

    Queue实现的是点到点模型,在以下的例子中,启动2个消费者共同监听一个Queue,然后循环给这个Queue发送多个消息。
    代码如下:
    public class QueueTest {

    /**
    * @param args
    */
    public static void main(String[] args) {
    ActiveMQConnectionFactory factory=new ActiveMQConnectionFactory("vm://localhost");
    Connection con=null;
    Session session=null;
    Queue queue=null;
    try {
    con=factory.createConnection();
    //这句很重要
    con.start();
    } catch (JMSException e) {
    e.printStackTrace();
    }
    try {
    session=con.createSession(false, Session.AUTO_ACKNOWLEDGE);
    } catch (JMSException e) {
    System.out.println("--创建Session出现错误--");
    }
    queue=new ActiveMQQueue("testQueue");
    //注册消费者1
    try {
    MessageConsumer consumer1=session.createConsumer(queue);
    consumer1.setMessageListener(new MessageListener(){
    public void onMessage(Message arg0) {
    try {
    System.out.println("消费者1接收到的消息 ---------"+((TextMessage)arg0).getText());
    } catch (JMSException e) {
    e.printStackTrace();
    }
    }
    });
    } catch (JMSException e) {
    e.printStackTrace();}

    //注册消费者2
    try {
    MessageConsumer consumer2=session.createConsumer(queue);
    consumer2.setMessageListener(new MessageListener(){
    public void onMessage(Message arg0) {
    try {
    System.out.println("消费者2接收到的消息---------"+((TextMessage)arg0).getText());
    } catch (JMSException e) {
    e.printStackTrace();
    }
    }
    });
    } catch (JMSException e) {
    e.printStackTrace();
    }

    //注册一个消息生产者
    try {
    MessageProducer procedure=session.createProducer(queue);
    for(int i=1;i<=10;i++)
    {
    procedure.send(session.createTextMessage("message"+i));
    }
    } catch (JMSException e) {
    e.printStackTrace();
    }
    }
    }
    运行这个例子 可以看出:每个消息被消费了一次,但是如果有多个消费者共同监听一个Queue的话,无法确定一个消息最终会被那个消费者消费。

  • 相关阅读:
    JAVA 字符处理
    android:visibility 隐藏 可见 不可见
    Android中 int 和 String 互相转换的多种方法
    日期月和日补零
    【程序】程序报错 error:-1610149839 等大负数
    【IE】将IE11改为64位
    【linux】CentOS网络配置
    【linux】CentOS虚拟机eth0 提示Device does not seem to be present
    【SUSE】关闭防火墙
    【走马观花】十月八日通州雾
  • 原文地址:https://www.cnblogs.com/fjhh/p/5370571.html
Copyright © 2011-2022 走看看