ActiveMQ学习笔记#1
#0 下载安装activemq 访问控制台http://localhost:8161/ 默认用户名密码admin/admin
#1 创建队列消息生产者
创建一个maven工程
<dependencies> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.15.11</version> </dependency> </dependencies>
新建一个生产者类,activemq实例默认端口61616
import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; /** * Created by B on 2020/2/17. */ public class Producer { public static void main(String args[]) throws JMSException { //默认实例地址 String brokerURL = "tcp://127.0.0.1:61616"; // 1、创建一个连接工厂对象,需要指定服务的ip及端口。 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL); // 2、使用工厂对象创建一个Connection对象。 Connection connection = connectionFactory.createConnection(); // 3、开启连接,调用Connection对象的start方法。 connection.start(); // 4、创建一个Session对象。 // 第一个参数:是否开启事务。如果true开启事务,第二个参数无意义。一般不开启事务false。 // 第二个参数:应答模式。自动应答或者手动应答。一般自动应答。 Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); // 5、使用Session对象创建一个Destination对象。两种形式queue、topic Queue queue = session.createQueue("test-queue"); // 6、使用Session对象创建一个Producer对象。 MessageProducer producer = session.createProducer(queue); // 7、创建一个Message对象,可以使用TextMessage。 TextMessage textMessage = session.createTextMessage("生产者生产的消息,编号是"+System.currentTimeMillis());
System.out.println("新发送一条信息到队列,消息:"+textMessage.getText());
// 8、发送消息
producer.send(textMessage);
// 9、关闭资源
producer.close(); session.close(); connection.close(); } }
运行
查看控制台,此时显示队列中的消息统计情况,都还未被消费
#2 新建一个消费者
import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; import java.io.IOException; /** * Created by dell on 2020/2/17. */ public class Consumer { public static void main(String args[]) throws JMSException, IOException { String brokerURL = "tcp://127.0.0.1:61616"; ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL); Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); Queue queue = session.createQueue("test-queue"); MessageConsumer consumer = session.createConsumer(queue); consumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { if(message!=null && message instanceof TextMessage){ TextMessage textMessage = (TextMessage) message; String text = null; try { text = textMessage.getText(); } catch (JMSException e) { e.printStackTrace(); } System.out.println("消费者消费队列的消息 消息为:"+text); } } }); // 等待接收消息 System.in.read(); // 关闭资源 consumer.close(); session.close(); connection.close(); } }
运行 显示之前生产的消息被消费
分类:
ActiveMQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端