ActiveMQ_消费者编码
public class JmsConsumer { public static final String ACTIVEMQ_URL = "tcp://192.168.xx.xx:61616"; public static void main(String[] args) throws Exception{ //创建activemq连接工厂 ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(ACTIVEMQ_URL); //获得连接 Connection connection = factory.createConnection(); //打开连接 connection.start(); //创建session Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //创建目的地对象 Destination queue = session.createQueue("queue01"); //创建消费者 MessageConsumer consumer = session.createConsumer(queue); //消费消息 while (true){ //接收消息 TextMessage message = (TextMessage) consumer.receive(); //判断消息是否为空 if(null != message){ System.out.println(message.getText()); }else{ break; } } //关闭资源 consumer.close(); session.close(); connection.close(); } }
强调:consumer的receive有两个,无参receive():表示一直等着,程序挂着那;有参receive(timeout):在规定时间内等待;所以我们的receive它是同步阻塞的
上面是通过receive来消费消息,现在采用监听器的方式(异步非阻塞):
public class JmsConsumer2 { public static final String ACTIVEMQ_URL = "tcp://192.168.xx.xxx:61616"; public static void main(String[] args) throws Exception{ //创建activemq连接工厂 ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(ACTIVEMQ_URL); //获得连接 Connection connection = factory.createConnection(); //打开连接 connection.start(); //创建session Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //创建目的地对象 Destination queue = session.createQueue("queue01"); //创建消费者 MessageConsumer consumer = session.createConsumer(queue); //监听消息 consumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { if(null != message && message instanceof TextMessage){ TextMessage textMessage = (TextMessage) message; try { System.out.println(textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } } }); System.in.read(); //关闭资源 consumer.close(); session.close(); connection.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~