spring與消息rabbitmq集合

1.分別建一個發消息的rabbitmq和接消息的rabbitmqjava

而且發消息發兩個不一樣的q,接消息也接不一樣的Qspring

2.先是發消息的項目producerapache

 

pom.xml服務器

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.rabbitmq</groupId>
	<artifactId>com-rabbitmq-producer</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<dependencies>

		<!-- RabbitMQ -->
		<dependency>
			<groupId>com.rabbitmq</groupId>
			<artifactId>amqp-client</artifactId>
			<version>3.5.1</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.amqp</groupId>
			<artifactId>spring-rabbit</artifactId>
			<version>1.4.5.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>4.3.8.RELEASE</version>
		</dependency>
	</dependencies>
</project>

 RabbitMQProducerService.javamaven

package com.rabbitmq.producer.service;


public interface RabbitMQProducerService
{
	public void sendMessage(String message);
	public void sendMessageyy(String message);
}

 RabbitMQProducerServiceImpl.javaui

package com.rabbitmq.producer.service.impl;

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.rabbitmq.producer.service.RabbitMQProducerService;




@Service("rabbitMQProducerService")
public class RabbitMQProducerServiceImpl implements RabbitMQProducerService
{

	@Autowired
    private AmqpTemplate amqpTemplate;
	
	public void sendMessage(String message) 
	{
		//guilfrrrrrrr爲配置文件中queue對應的key,指明發送給哪一個queue。
		amqpTemplate.convertAndSend("guilfrrrrrrr",message);
	}

	public void sendMessageyy(String message) {
		//guilfrrrrrrr爲配置文件中queue對應的key,指明發送給哪一個queue。
		amqpTemplate.convertAndSend("guilfyyyy",message);
	}

}

 spring.xmlspa

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd"
      >
    
     <!-- 掃描文件(自動將servicec層注入) -->
    <context:component-scan base-package="com.rabbitmq.producer.service"/>
   
 </beans>

 mq-config.xml3d

<?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">
       	
	<!-- RabbitMQ 經過參數建立工廠-->
	<rabbit:connection-factory id="rabbitConnectionFactory" addresses="192.168.88.134"  
		username="admin" password="admin"/>

	<!--經過指定下面的admin信息,當前producer中的exchange和queue會在rabbitmq服務器上自動生成-->
	<rabbit:admin connection-factory="rabbitConnectionFactory" />
	
	
    <!-- queue 隊列聲明 聲明不一樣的Q,這Q會顯示在RabbitMQ頁面上-->  
   	<rabbit:queue durable="true" auto-delete="false" exclusive="false" name="guilfRabbitmqtt"/>
   	<rabbit:queue durable="true" auto-delete="false" exclusive="false" name="guilfRabbitmqyy"/>
   	
   	
   	<!-- 定義direct exchange,綁定com.mj.test queue  一個queue是顯示在RabbitMQ頁面上,key跟實現類裏面的key同樣-->
	<rabbit:direct-exchange name="guitttttttttt">
	    <rabbit:bindings>
	        <rabbit:binding queue="guilfRabbitmqtt" key="guilfrrrrrrr" />
	        <rabbit:binding queue="guilfRabbitmqyy" key="guilfyyyy" />
	    </rabbit:bindings>
	</rabbit:direct-exchange>

	<!--定義rabbit template用於數據的接收和發送 amqpTemplate這個會在實現裏面注入發送消息-->
    <rabbit:template id="amqpTemplate" connection-factory="rabbitConnectionFactory" exchange="guitttttttttt" />
    
</beans>

 RabbitMQTest.javacode

import org.junit.Test;
import org.junit.Before;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.rabbitmq.producer.service.RabbitMQProducerService;






public class RabbitMQTest
{
	private RabbitMQProducerService rabbitMQProducerService;
	
    
    @Before
    public void before(){                                                                   
        @SuppressWarnings("resource")
        ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:conf/spring.xml",
        		"classpath:conf/mq-config.xml"});
     
        rabbitMQProducerService = (RabbitMQProducerService) context.getBean("rabbitMQProducerService");
    }

    @Test
   	public void testSend1()
   	{
       	
       	try {
       		rabbitMQProducerService.sendMessage("my first rabbitmq send1!");
   		} catch (Exception e) {
   			e.printStackTrace();
   		}
   	}
  
    @Test
   	public void testSend2()
   	{
       	
       	try {
       		rabbitMQProducerService.sendMessageyy("my first rabbitmq send2!");
   		} catch (Exception e) {
   			e.printStackTrace();
   		}
   	}
   

}

 獲得結果component

2.監聽Q並消費掉 comsumer,這裏就有兩個消費

 

 

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.rabbitmq</groupId>
	<artifactId>com-rabbitmq-comsumer</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<dependencies>

		<!-- RabbitMQ -->
		<dependency>
			<groupId>com.rabbitmq</groupId>
			<artifactId>amqp-client</artifactId>
			<version>3.5.1</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.amqp</groupId>
			<artifactId>spring-rabbit</artifactId>
			<version>1.4.5.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>4.3.8.RELEASE</version>
		</dependency>
	</dependencies>
</project>

 spring.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd"
      >
      
    
     <!-- 掃描文件(自動將servicec層注入) -->
    <context:component-scan base-package="com.rabbitmq.producer.service"/>
   
 </beans>

 mq-config.xml

<?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">
       	
	<!-- RabbitMQ 獲得工廠-->
    <rabbit:connection-factory id="rabbitConnectionFactory" addresses="192.168.88.134"  
		username="admin" password="admin"/>

    <rabbit:admin connection-factory="rabbitConnectionFactory" />
<!--監聽-->
<rabbit:listener-container connection-factory="rabbitConnectionFactory" acknowledge="auto"> 
  <rabbit:listener queue-names="guilfRabbitmqtt" ref="messageListenertt" />
  <rabbit:listener queue-names="guilfRabbitmqyy" ref="messageListeneryy" />
</rabbit:listener-container>
</beans>

 RabbitMQComsumerttService.java

 

package com.rabbitmq.comsumer.service;


public interface RabbitMQComsumerttService
{
	public void sendMessage(String message);
}

 RabbitMQComsumeryyService.java

package com.rabbitmq.comsumer.service;


public interface RabbitMQComsumeryyService
{
	public void sendMessageyy(String message);
}

 RabbitMQProducerttServiceImpl.java

package com.rabbitmq.comsumer.service.impl;

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.stereotype.Service;

import com.rabbitmq.comsumer.service.RabbitMQComsumerttService;




@Service("messageListenertt")
public class RabbitMQProducerttServiceImpl implements RabbitMQComsumerttService,MessageListener
{

	public void sendMessage(String message) 
	{
		System.out.println(message+"tt");
	}

	public void onMessage(Message message) {
		String msg = new String(message.getBody());
		System.out.println(msg+"tt");
		sendMessage(msg);
	}

}

 RabbitMQProduceryyServiceImpl.java

package com.rabbitmq.comsumer.service.impl;

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.stereotype.Service;

import com.rabbitmq.comsumer.service.RabbitMQComsumeryyService;




@Service("messageListeneryy")
public class RabbitMQProduceryyServiceImpl implements RabbitMQComsumeryyService,MessageListener
{

	public void sendMessageyy(String message) {
		System.out.println(message+"yy");
	}

	public void onMessage(Message message) {
		String msg = new String(message.getBody());
		System.out.println(msg+"yy");
		sendMessageyy(msg);
	}

}

 TestMain.java

import java.io.IOException;

import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;



/**
 * 應用啓動入口類
 */
public class TestMain {

	public static void main(String[] args) {
        @SuppressWarnings("resource")
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(    
                new String[]{"classpath:conf/spring.xml","classpath:conf/mq-config.xml"});    
        context.start();  

        System.out.println("Press any key to exit.");    
        try {
			System.in.read();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}
	
	 

}

 啓動獲得

相關文章
相關標籤/搜索