Rabbitmq应用文档

Rabbitmq应用文档

项目集成rabbitmp

修改文件

pom.xml

<spring.version>4.3.5.RELEASE</spring.version>

<jackson.version>2.8.6</jackson.version>

<!--rabbitmq依赖 -->

<dependency>

<groupId>org.springframework.amqp</groupId>

<artifactId>spring-rabbit</artifactId>

<version>1.7.0.RELEASE</version>

</dependency>

applicationContext.xml

<import resource="classpath:applicationContext-*.xml" />

增加文件

applicationContext-rabbit.xml-------部署的时候需要修改该文件内的用户名,密码,ip地址,端口号等

<?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.xsd

http://www.springframework.org/schema/rabbit

http://www.springframework.org/schema/rabbit/spring-rabbit.xsd">

 

 

<!--配置注解RabbitListener支持 start-->

<rabbit:annotation-driven/>

<bean id="rabbitListenerContainerFactory"

class="org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory">

<property name="connectionFactory" ref="connectionFactory"/>

<property name="concurrentConsumers" value="3"/>

<property name="maxConcurrentConsumers" value="10"/>

<property name="messageConverter" ref="jackson2JsonMessageConverter"/>

</bean>

<!--配置注解RabbitListener支持 end-->

<!--配置connection-factory,指定连接rabbit server参数 start -->

<rabbit:connection-factory id="connectionFactory"

username="bksx"

password="bksx"

addresses="130.10.8.207:5672,130.10.8.208:5672,130.10.8.209:5672"

publisher-confirms="true"

/>

<!-- host="130.10.8.207" port="5672" -->

<!--配置connection-factory,指定连接rabbit server参数 end -->

<!--定义rabbit template用于数据的接收和发送 start -->

<rabbit:template id="amqpTemplate" connection-factory="connectionFactory"

message-converter="jackson2JsonMessageConverter"

receive-timeout="120000"

exchange="exchangeTest">

</rabbit:template>

<!--定义rabbit template用于数据的接收和发送 end -->

<!--指定数据序列化方式 用jackson序列化为json start-->

<bean id="jackson2JsonMessageConverter"

class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter">

</bean>

<!--指定数据序列化方式 用jackson序列化为json end-->

 

<!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成 start-->

<rabbit:admin id="connectAdmin" connection-factory="connectionFactory"/>

<!--定义queue start-->

<rabbit:queue name="queueChris" durable="true" auto-delete="false" exclusive="false" declared-by="connectAdmin"/>

 

<!--

配置详解

durable:是否持久化

exclusive:仅创建者可以使用的私有队列,断开后自动删除

auto-delete:当所有消费端连接断开后,是否自动删除队列

-->

<!--定义queue end-->

 

<!-- 定义direct exchange,绑定queueTest -->

<rabbit:direct-exchange name="exchangeTest" durable="true" auto-delete="false" declared-by="connectAdmin">

<rabbit:bindings>

<rabbit:binding queue="queueChris" key="queueTestChris"></rabbit:binding>

</rabbit:bindings>

</rabbit:direct-exchange>

</beans>

业务文件

消息发送端调用rabbitMq代码:

消息同步返回

@Autowired

private AmqpTemplate amqpTemplate;

private final String KEY="queueTestChris"; {

// 居住证

Object msg = new Object; zdbh:站点编号;yyrq:yyyyMMddHHmmss预约日期

Object sfyycg = (Object) amqpTemplate.convertSendAndReceive(KEY, fo);

}

消息异步返回

@Autowired

private AsyncRabbitTemplate asyncRabbitTemplate;

AsyncRabbitTemplate.RabbitConverterFuture<Object> RabbitConverterFuture = asyncRabbitTemplate.convertSendAndReceive(KEY, o);

RabbitConverterFuture.addCallback(new ListenableFutureCallback<Boolean>(){

@Override

public void onSuccess(Object o) {

//TODO 处理成功调用

}

 

@Override

public void onFailure(Throwable throwable) {

//TODO处理失败调用

}

});

消息处理端调用rabbitMq代码

@Service

public class ChrisConsumer {

private Logger logger = LoggerFactory.getLogger(ChrisConsumer.class);

 

@RabbitListener(queues = "queueChris")

@SendTo

public Object messageHandler(Object o) throws Exception {

 

//TODO 消息处理端业务处理代码

return result; //业务返回对象,可以自定义类型

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值