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来绑定一对一关系
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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 中如何实现缓存的预热?