ActiveMQ发送queue消息

我们在taotao-manager和taotao-search工程中都会用到消息服务,因此我们可以选择其中任何一个工程来进行测试,这里我们使用taotao-manager-service工程(taotao-manager的子工程)来测试一下面对面发送消息和接收消息。 
首先,我们需要在taotao-manager-service工程中添加对activemq的maven依赖,如下图所示,activemq的版本号在taotao-parent工程中已经统一定义好了,我们使用的是5.11.2版本的Jar包,之所以选择这个版本的Jar包,是因为这个版本的Jar包还没有spring相关的包结构,与spring结合不会有问题,我们安装的activemq服务是5.12.0版本的,它里面的Jar包是有spring相关的Jar包的,这样会引起Jar包冲突,出现各种各样的问题,因此我们虽然安装的是5.12.0版本的activemq,但是我们使用的Jar包却是5.11.2版本。 
这里写图片描述 
下面我们在taotao-manager-service工程中新建一个测试包和单元测试类,如下图所示。 
这里写图片描述 
为方便大家复制,现将TestActiceMQ单元测试类的代码贴出。

public class TestActiceMQ {

    @Test
    public void testQueueProducer() throws Exception {
        /*
         * 1.创建一个连接工厂对象——ConnectionFactory对象,需要指定ActiceMQ服务的ip及端口号。
         *   注意参数brokerURL的开头是tcp://,而不是我们通常所见的http://,端口是61616而不是我们访问ActiceMQ
         *   后台管理页面时所使用的8161。
         */
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.129:61616");
        // 2.使用ConnectionFactory对象来创建一个Connection对象
        Connection connection = connectionFactory.createConnection();
        // 3.开启连接,需要调用Connection对象的start方法
        connection.start();
        /*
         * 4.使用Connection对象创建一个Session对象
         *   第一个参数:是否开启事务(ActiceMQ的事务),一般不使用分布式事务,因为它特别消耗性能,而且顾客体验特别差,
         *            现在互联网的做法是保证数据的最终一致(也就是允许暂时数据不一致)。比如顾客下单购买东西,一旦订单生成完就立刻响应给用户
         *            下单成功。至于下单后一系列的操作,比如通知会计记账、通知物流发货、商品数量同步等等都先不用管,只需要发送一条消息到消息队列,
         *            消息队列来告知各模块进行相应的操作,一次告知不行就两次,直到完成所有相关操作为止,这也就做到了数据的最终一致性。
         *            如果第一个参数设为true,那么第二个参数将会被直接忽略掉。如果第一个参数为false,那么第二个参数才有意义。
         *   第二个参数:消息的应答模式,常见的有手动应答和自动应答两种模式。我们一般使用自动应答模式。
         */
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        // 5.使用Session对象创建一个Destination对象,目的地有两种形式,一种是queue,一种是topic
        Queue queue = session.createQueue("test-queue"); // 不同名字的Queue相当于是不同的队列,你要是发生消息的时候,你要注意你这个消息要往哪个队列中发送
        // 6.使用Session对象创建一个Producer对象
        MessageProducer producer = session.createProducer(queue);
        // 7.使用Producer对象发生消息
        TextMessage textMessage = new ActiveMQTextMessage();
        textMessage.setText("使用ActiceMQ 发送的队列消息");
        // TextMessage textMessage2 = session.createTextMessage("使用ActiceMQ 发送的队列消息");
        producer.send(textMessage);
        // 8.关闭资源
        producer.close();
        session.close();
        connection.close();
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

我们运行上面的测试方法,执行成功后,我们到activemq的后台管理系统,点击”Queues”,可以看到我们刚才发送的那条消息”test-queue”。 
这里写图片描述 
接着我们点击”test-queue”,会看到如下图所示界面,可以看到刚才发送的那条消息的ID信息,Persistence(持久化)为永久保存,Priorty(优先级)为4,Redelivered(是否重复投递消息)为false,即不重复投递消息。 
这里写图片描述 
紧接着我们点击ID那一长串字符串,会看到如下图所示界面,我们在”Message Details”一栏,可以看到我们发送的消息信息。 
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值