1.RabbitMQ的jar包
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.6.5</version>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
2.配置RabbitMQ与Spring整合xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
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/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/rabbit
http://www.springframework.org/schema/rabbit/spring-rabbit.xsd">
<rabbit:connection-factory id="connectionFactory"
host="${rabbit.connect.host}" //路径
port="${rabbit.connect.port}" //端口号
username="${rabbit.connect.username}"//用户名
password="${rabbit.connect.password}" //密码
channel-cache-size="${rabbit.connect.channelCacheSize}"//连接大小
publisher-returns="true" publisher-confirms="true" />
<rabbit:admin connection-factory="connectionFactory" />
<rabbit:template id="hzyMQ" connection-factory="connectionFactory"/>//相当于做一个模板,谁发送消息到服务端就要注入这个bean进去
<rabbit:queue name="messageAsset" durable="true" auto-delete="false" exclusive="false" />
<rabbit:direct-exchange name="hzyMQ.Exchange" durable="true" auto-delete="false">
<rabbit:bindings>
<rabbit:binding queue="messageAsset" key="HZYtMessage"></rabbit:binding>
</rabbit:bindings>
</rabbit:direct-exchange>
//定义接收者
<bean id="msgListener" class="cn.hzy.MsgAssetListener"/>
<rabbit:listener-container connection-factory="connectionFactory" acknowledge="auto" concurrency="5" prefetch="3" max-concurrency="10">
<rabbit:listener queues="messageAsset" ref="msgListener" />
</rabbit:listener-container>
</beans>
3.生产者
@Component("hzyMQService")
@Transactional
public class HzyMQService {
@Autowired
@Qualifier("hzyMQ")
private AmqpTemplate hzyMQ;
@Override
public void sendAssetMessage(String content){
hzyMQ.convertAndSend("hzyMQ.Exchange", "HZYtMessage", content);
}
}
4.消费者
public class MsgAssetListener implements MessageListener {
public void onMessage(Message message) {
String json = new String(message.getBody());
System.out.println("【MsgAssetListener 接收到消息】:"+json);
}
}