初識rabbitMQ(一)

19/5/29  對於rabbitMQ ,我已經研究了幾天。 之前完全的沒有接觸過,所以有很多的概念,很多的坑要踩

首先是安裝 rabbitmq 這個就不記錄了。

1、引入 Maven

<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-amqp</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.amqp/spring-rabbit -->
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>



2、配置 ,寫配置文件
<!--步驟1、配置鏈接工廠-->
<bean id="connectionFactory" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
<property name="host" value="${mq.address}"/>
<property name="port" value="${mq.port}"/>
<property name="password" value="${mq.pwd}"/>
<property name="username" value="${mq.user}"/>
<property name="publisherConfirms" value="true"/>
<property name="publisherReturns" value="true"/>
<property name="virtualHost" value="${mq.vhost}"/>
<property name="requestedHeartBeat" value="50"/>
</bean>
<!--步驟2、創建rabbitTemplate 消息模板-->
<bean id="rabbitTemplate" class="org.springframework.amqp.rabbit.core.RabbitTemplate">
<!--構造方法需要鏈接信息-->
<constructor-arg ref="connectionFactory"/>
<!--配置交換機-->
<property name="exchange" value="${mq.exchange}"/>
<!--配置路由鍵-->
<property name="routingKey" value="${mq.routingKey}"/>
<!--配置隊列-->
<property name="queue" value="${mq.queue}"/>
<!--配置消息轉換-->
<property name="messageConverter" ref="serializerMessageConverter"/>
<property name="confirmCallback" ref="rabbitTemplateConfig" />
<property name="returnCallback" ref="rabbitTemplateConfig" />
<property name="mandatory" value="true" />
</bean>
<bean id="rabbitTemplateConfig" class="mq.RabbitTemplateConfig"/>
<!--注入消息轉換器-->
<bean id="serializerMessageConverter" class="org.springframework.amqp.support.converter.SimpleMessageConverter"/>
<!--引入元素文件-->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties">
<bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:conf/value.properties</value>
</list>
</property>
<property name="fileEncoding" value="UTF-8"/>
</bean>
</property>
</bean>
<!--申明消費者-->
<bean id="rmqConsumer" class="mq.RmqConsumer" />
<bean id="messageListenerAdapter" class="org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter">
<constructor-arg ref="rmqConsumer" />
<property name="defaultListenerMethod" value="rmqConsumeMessage"/>
<property name="messageConverter" ref="serializerMessageConverter"/>
</bean>
<!--註冊監聽-->
<bean id="listener" class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="queueNames" value="ceshiQueues,ceshi1,ceshi2"/>
<property name="messageListener" ref="messageListenerAdapter"/>
<property name="acknowledgeMode" value="MANUAL"/>
</bean>

這個是我關於rabbitMQ 所用的配置,下面記錄一下具體的作用。
(1、)配置鏈接
  通過配置鏈接工廠從而鏈接到rabbitMQ
<!--步驟1、配置鏈接工廠-->
<bean id="connectionFactory" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
<property name="host" value="${mq.address}"/>//鏈接的地址 127.0.0.1
<property name="port" value="${mq.port}"/>//端口號 5627
<property name="password" value="${mq.pwd}"/> //密碼
<property name="username" value="${mq.user}"/> //用戶名
<property name="publisherConfirms" value="true"/> //是否開啓提交到交換機的回調
<property name="publisherReturns" value="true"/> //是否開啓發送到隊列的錯誤回調
<property name="virtualHost" value="${mq.vhost}"/>// 虛擬機
<property name="requestedHeartBeat" value="50"/>//心跳時間(這個可刪除,我不知道有什麼用,以後有領悟再記錄)
</bean>

屬性文件中的內容
mq.address=127.0.0.1
mq.exchange=ceshi
mq.routingKey=ceshiRouting
mq.queue=ceshiQueues
mq.port=5672
mq.user=***
mq.pwd=t**an****
mq.timeout=5000
mq.vhost=testMQ

關於開啓 ConfirmReturn 的回調 還需要在模板 rabbitTemplate 中進行設置

<!--步驟2、創建rabbitTemplate 消息模板-->
<bean id="rabbitTemplate" class="org.springframework.amqp.rabbit.core.RabbitTemplate">
<!--構造方法需要鏈接信息-->
<constructor-arg ref="connectionFactory"/>
<!--配置交換機-->
<property name="exchange" value="${mq.exchange}"/>
<!--配置路由鍵-->
<property name="routingKey" value="${mq.routingKey}"/>
<!--配置隊列-->
<property name="queue" value="${mq.queue}"/>
<!--配置消息轉換-->
<property name="messageConverter" ref="serializerMessageConverter"/>
<property name="confirmCallback" ref="rabbitTemplateConfig" />
<property name="returnCallback" ref="rabbitTemplateConfig" />
<property name="mandatory" value="true" />
</bean>
註冊模板類的bean 類 org.springframework.amqp.rabbit.core.RabbitTemplate  
在其構造方法中傳入鏈接工廠的引用, 如上 代碼  重點看 下面這幾行配置 
    <property name="confirmCallback" ref="rabbitTemplateConfig" />
<property name="returnCallback" ref="rabbitTemplateConfig" />
<property name="mandatory" value="true" />
這個就是上面提到的 回調,
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章