RabbitMQ:整合Spring

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>  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值