activemq---点对点/发布订阅模式简单代码示例

 activemq 消息模式流程: ConnnectionFactory --> Connection --> Session --> Message


---ConnectionFactory,通过连接工厂创建连接

ConnectionFactory factory = new ActiveMQConnectionFactory("xxx.properties");
Connection connection = factory.createConnecion();
connection.start();

---session,创建会话
final Session session = connection.createSession(false, AUTO_ACKNOWLEDGE);

---设置JMSReplyTo为一个Destination,表示需要回复的目的地

message.setJMSReplyTo(replyQueue);

---message,创建消息
Message message = session.createTextMessage("jms-active");

---queue,创建队列
Queue queue = new ActiveMQQueue("active_queue");

---topic,创建topic

Topic topic = new ActiveMQTopic("active_topic");

 

queue与topic不同之处,就在于此。二者的创建方式的不同

 

---producer,创建生产者
MessageProducer producer = session.createProducer(queue);

---设置是否可持久化

producer.setDeliveryMode(DeliveryMode.persistent或nonpersistent);

--- 设置消息的有效期

producer.setTimeToLive(3600000); 默认是0表示永不过期

 

---send message,发送消息至queue
producer.send(message);


---consumer,创建消费者
MessageConsumer consumer = session.createConsumer(queue);

---创建只接受特定消息的一个消费者,selector是一个字符串,用来过来消息

sesssion.createConsumer(destination, selector);

---receive msg,接受消息

第一种receive方法没有设置等待时间,所以消费者会一直等待。可通过int timeout设置等待的超时时间

Message receiveMsg = consumer.receive();
(TextMessge)receiveMsg.getText();

 

可知这种方式不够友好,可改用监听的方式来消费消息

consumer.setMessageListener(new MessageListener(){

  @Override

  public void onMessage(Message m) {

    TextMessage textMsg = (TextMessage) m;

    try{

      System.out.println(textMsg.getText());

    }catch(JMSException e) {

      xxx

    }

  }

});

 

消费者与生产者通过同一queue来绑定一对一关系

 

posted @   秋水秋色  阅读(472)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示