发送消息代码
EXCHANGE_NAME为通道
ROUTINGKEY_NAME+ objs.getString("templateName")为动态队列
Obj为消息内容
@Resource
private RabbitTemplate rabbitTemplate;
rabbitTemplate.convertAndSend(EXCHANGE_NAME, ROUTINGKEY_NAME
+ objs.getString("templateName"), objs);
接收消息代码
package com.iqb.eatep.house.rabbit.mq.data.mq;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.iqb.eatep.house.rabbit.mq.data.service.IMessageService;
import com.rabbitmq.client.Channel;
@Component
public class MessageQueueListener implements ChannelAwareMessageListener{
public static Logger logger = LoggerFactory.getLogger(MailQueueListener.class);
@Autowired
private IMessageService messageServiceImpl;
@Override
public void onMessage(Message message, Channel channel) throws Exception {
String messageTemplateKey = message.getMessageProperties().getReceivedRoutingKey();
String messageNameKey = messageTemplateKey.substring(messageTemplateKey.indexOf(".")+1, messageTemplateKey.length());
String messageContents = new String(message.getBody(),"UTF-8");
try{
messageServiceImpl.callbackMessage(channel,messageNameKey, messageContents);
}catch(Exception e){
logger.error("消息发送失败:" + e.getMessage());
}
}
}
spring-mq.xml
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/rabbit
http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd" >
rabbitmq 连接服务配置