package hcl.MyRabbitTest2;
import java.io.IOException;
import org.aspectj.lang.annotation.Before;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Ceshi {
public static void main(String[] args) throws IOException {
ApplicationContext context = null;
context = new ClassPathXmlApplicationContext("applicationContext4.xml");
MessageProducer messageProducer = (MessageProducer) context.getBean("messageProducer");
int a = 5;
while (a > 0) {
messageProducer.sendMessage("Hello, this is amq sender num :" + a--);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package hcl.MyRabbitTest2;
import java.io.IOException;
import java.util.UUID;
import javax.annotation.Resource;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.core.MessageProperties;
import org.springframework.stereotype.Service;
@Service
public class MessageProducer {
@Resource(name="amqpTemplate")
private AmqpTemplate amqpTemplate;
public void sendMessage(Object message) throws IOException {
System.out.println( message);
//amqpTemplate.convertAndSend("key123", message);
Message msg = MessageBuilder.withBody("tiandabeiyang1895".getBytes())
.setContentType(MessageProperties.CONTENT_TYPE_JSON)
.setContentEncoding("utf-8")
.setMessageId(UUID.randomUUID()+"")
.build();
amqpTemplate.convertAndSend("key123",msg);
}
}
package hcl.MyRabbitTest2;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
public class MessageConsumer implements MessageListener {
public void onMessage(Message message) {
System.out.println("Consumer1 receive message------->:{}"+ message);
}
}
配置文件
<?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"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/rabbit
http://www.springframework.org/schema/rabbit/spring-rabbit-1.2.xsd
">
<context:component-scan base-package="hcl.MyRabbitTest2" />
<context:annotation-config />
<context:spring-configured />
<rabbit:connection-factory id="connectionFactory" virtual-host="/"
username="guest" password="guest" host="127.0.0.1" port="5672" />
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory"
exchange="MyDirectExchange" />
<rabbit:admin id="connectAdmin" connection-factory="connectionFactory" />
<rabbit:direct-exchange name="MyDirectExchange"
durable="true" auto-delete="false" declared-by="connectAdmin">
<rabbit:bindings>
<rabbit:binding queue="MyDirectQueue" key="key123"></rabbit:binding>
</rabbit:bindings>
</rabbit:direct-exchange>
<rabbit:queue name="MyDirectQueue" durable="true" auto-delete="false"
exclusive="false" declared-by="connectAdmin" />
<bean id="messageProducer" class="hcl.MyRabbitTest2.MessageProducer"></bean>
<bean id="messageReceiver" class="hcl.MyRabbitTest2.MessageConsumer"></bean>
<rabbit:listener-container
connection-factory="connectionFactory">
<rabbit:listener queues="MyDirectQueue" ref="messageReceiver" />
</rabbit:listener-container>
<rabbit:template id="amqpTemplate3" connection-factory="connectionFactory"
exchange="MyFanoutExchange" />
<rabbit:queue name="fanoutqueue01" durable="true"
auto-delete="false" exclusive="false" declared-by="connectAdmin" />
<rabbit:queue name="fanoutqueue02" durable="true"
auto-delete="false" exclusive="false" declared-by="connectAdmin" />
<rabbit:queue name="fanoutqueue03" durable="true"
auto-delete="false" exclusive="false" declared-by="connectAdmin" />
<rabbit:fanout-exchange name="MyFanoutExchange"
durable="true" auto-delete="false" declared-by="connectAdmin">
<rabbit:bindings>
<rabbit:binding queue="fanoutqueue01" ></rabbit:binding>
<rabbit:binding queue="fanoutqueue02" ></rabbit:binding>
<rabbit:binding queue="fanoutqueue03" ></rabbit:binding>
</rabbit:bindings>
</rabbit:fanout-exchange>
<bean id="messageReceiver31" class="hcl.MyRabbitTest2.MessageConsumer31"></bean>
<bean id="messageReceiver32" class="hcl.MyRabbitTest2.MessageConsumer32"></bean>
<bean id="messageReceiver33" class="hcl.MyRabbitTest2.MessageConsumer33"></bean>
<rabbit:listener-container
connection-factory="connectionFactory">
<rabbit:listener queues="fanoutqueue01" ref="messageReceiver31" />
</rabbit:listener-container>
<rabbit:listener-container
connection-factory="connectionFactory">
<rabbit:listener queues="fanoutqueue02" ref="messageReceiver32" />
</rabbit:listener-container>
<rabbit:listener-container
connection-factory="connectionFactory">
<rabbit:listener queues="fanoutqueue03" ref="messageReceiver33" />
</rabbit:listener-container>
<rabbit:queue name="topicqueue01" durable="true"
auto-delete="false" exclusive="false" declared-by="connectAdmin" />
<rabbit:queue name="topicqueue02" durable="true"
auto-delete="false" exclusive="false" declared-by="connectAdmin" />
<rabbit:queue name="topicqueue03" durable="true"
auto-delete="false" exclusive="false" declared-by="connectAdmin" />
<rabbit:queue name="topicqueue04" durable="true"
auto-delete="false" exclusive="false" declared-by="connectAdmin" />
<rabbit:queue name="topicqueue05" durable="true"
auto-delete="false" exclusive="false" declared-by="connectAdmin" />
<rabbit:topic-exchange name="MyTopicExchange"
durable="true" auto-delete="false" declared-by="connectAdmin">
<rabbit:bindings>
<rabbit:binding queue="topicqueue01" pattern="01.*"></rabbit:binding>
<rabbit:binding queue="topicqueue02" pattern="02.*"></rabbit:binding>
<rabbit:binding queue="topicqueue03" pattern="03.*"></rabbit:binding>
<rabbit:binding queue="topicqueue04" pattern="04.*"></rabbit:binding>
<rabbit:binding queue="topicqueue05" pattern="05.*"></rabbit:binding>
</rabbit:bindings>
</rabbit:topic-exchange>
<rabbit:template id="amqpTemplate2" connection-factory="connectionFactory"
exchange="MyTopicExchange" />
<bean id="reciever21" class="hcl.MyRabbitTest2.MessageConsumer21"></bean>
<bean id="reciever22" class="hcl.MyRabbitTest2.MessageConsumer22"></bean>
<bean id="reciever23" class="hcl.MyRabbitTest2.MessageConsumer23"></bean>
<bean id="reciever24" class="hcl.MyRabbitTest2.MessageConsumer24"></bean>
<bean id="reciever25" class="hcl.MyRabbitTest2.MessageConsumer25"></bean>
<rabbit:listener-container
connection-factory="connectionFactory">
<rabbit:listener queues="topicqueue01" ref="reciever21" />
<rabbit:listener queues="topicqueue02" ref="reciever22" />
<rabbit:listener queues="topicqueue03" ref="reciever23" />
<rabbit:listener queues="topicqueue04" ref="reciever24" />
<rabbit:listener queues="topicqueue05" ref="reciever25" />
</rabbit:listener-container>
</beans>