关于rabbitmq消息队列服务器的使用(二)

1,首先对于这个服务器的使用,现在的个人理解分为三个部分

第一部分:安装好rabbitmq服务器,然后再下载好java客户端(就是java操作的jar),然后通过他所提供的api进行操作

1,基本上操作都是以下几步:创建连接工厂(connecttionfactory),创建连接(connection),创建信道(channel),申明所要操作的消息队列,此时不论是生产者还是消费者只要有一个去申明即可创建对应的消息队列(queue)而后申明者则连接到这个消息队列。然后就是生成者发送消息的时候是将Message发送到Exchange,通过Message所带路由key与Exchange所绑定的queue的key去匹配,进行数据传输。而消费者则是以监听的方式从对应的消息队列中获取数据。

生成者示例(主要代码)

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.1.180");
factory.setUsername("admin");
factory.setPassword("admin");
factory.setPort(5672);

Channel chan = factory.newConnection().createChannel();

chan.exchangeDeclare("Exchange1", "topic");
chan.queueDeclare(queueName, true, false, false, null);
chan.basicPublish("Exchange1", queueName, null, gson.toJson(now).getBytes());


消费者类似,自己思考大笑

第二部分:整合spring

在真实的开发环境中,尤其是现在的框架横行时代,与主流框架整合是大势所趋,rabbitmq也可以和spring进行整合,在这个整合的过程中,除了spring的jar之外需要加入rabbitmq的java客户端以及与spring的整合包分别为:amqp-client-3.3.4.jar(其他版本也可),spring-amqp-1.3.5.release.jar,spring-rabbit-1.3.5.release.jar,spring-retry-1.1.0.release.jar。然后就是与rabbitmqservice服务器的连接操作,Exchange的申明以及Queue的申明都是可以直接在配置文件中操作,包括Exchange与Queue的绑定等,首先给出相关的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/rabbit
     http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">
    <!--配置connection-factory,指定连接rabbit server参数 -->
    <rabbit:connection-factory id="factory" 
username="admin" password="admin" host="192.168.1.180" port="5672" />
   <!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成 -->
<rabbit:admin connection-factory="factory" />
    <!--定义rabbit template用于数据的接收和发送 -->
<rabbit:template id="amqpTemplate"  connection-factory="factory" 
   exchange="Exchange1" encoding="utf-8"/>
     <!--定义queue durable:持久化,auto-delete:不链接删除,exclusive:排他性-->
     <rabbit:queue name="First" auto-delete="false" durable="true" exclusive="false" />
     <!-- <rabbit:queue name="queue2" auto-delete="false" durable="true" exclusive="false" /> -->
    
    <rabbit:topic-exchange name="Exchange1" >
        <rabbit:bindings>
            <rabbit:binding queue="First" pattern="#"></rabbit:binding>
            <!-- <rabbit:binding queue="queue2" pattern="q#"></rabbit:binding> -->
        </rabbit:bindings>
    </rabbit:topic-exchange>
    <!-- 注册消费者 -->
    <bean id="xfz1" class="cn.edu.Customer.Customer1"></bean>
  <!--   <bean id="xfz2" class="cn.edu.Customer.Customer2"></bean> -->
    <rabbit:listener-container connection-factory="factory">
    
        <rabbit:listener queues="First" ref="xfz1"/>
       <!--  <rabbit:listener queues="queue2" ref="xfz2"/> -->
    </rabbit:listener-container>
</beans>     

具体的详细操作就不写了,比较简单,如果不会可以发邮件问我:

954507155@qq.com


第三部分操作服务器:

在经过以上的操作之后,你可能就会发觉了:我通过监听可以实现让消费者去获取对应消息队列中的数据,但是如果我需要对整个系统进行操作,比如想知道有多少个消费者在线接受消息,有多少个connection,有多少个信道,等待这些问题就会发现有些被动不是那么容易做到(你要是非要在被一个监听的消费者处进行操作让他们去向外写出记录来统计个数,那就太过分了)

用官网给的api:https://raw.githack.com/rabbitmq/rabbitmq-management/rabbitmq_v3_6_5/priv/www/api/index.html

这里有你所想要的一切生气





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值