프로그램/spring

RabbitMQ, Spring AMQP setup and tester example

mulderu 2012. 4. 16. 06:50


빠른 메시지 처리 (binary type), 안정적인 RPC, Java And Spring Integration, Enterprise Scale, Cluster Support  

이러한 목적에 맞는 솔루션 >>>>>>>>>>


제가 찾은 솔루션능은 RabbitMQ 입니다.

현재 RabbitMQ는 VMWare 가 인수한 상태고, 당연히 Spring Framework 와 함께 진화 하고 있습니다.

초보자가 쉽게 사용할 수 있도록 간단한 설치 및 테스터를 적습니다.


미리작업

RabbitMQ 는 ERLANG 이라는 생소한 언어로 개발 되었습니다. 먼저 ERLANG 을 다운도르 설치 하세요 

ERLANG Download:  http://www.erlang.org/download.html



: 우분투에서 erlang  설치

> sudo apt-get install libncurses5 libncurses5-dev

> wget http://www.erlang.org/download/otp_src_R15B01.tar.gz

> tar xvzf otp_src_R15B01.tar.gz

> cd otp_src_R12B-5/

> ./configure

> make

> sudo make install


두둥 ~ RabbitMQ 설치하기  / 사이트 : http://www.rabbitmq.com/



Windows Version Download



: Unix RabbitMQ 설치  및 실행 (상세 설치 제외)

root@vlinux:~# wget http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.1/rabbitmq-server-generic-unix-2.8.1.tar.gz

root@vlinux:~# tar xvzf rabbitmq-server-generic-unix-2.8.1.tar.gz

root@vlinux:~# cd rabbitmq_server-2.8.1 

root@vlinux:~/rabbitmq_server-2.8.1# ls

ebin  include  LICENSE               LICENSE-BSD-glMatrix  LICENSE-MIT-eldap      LICENSE-MIT-Mochi     LICENSE-MPL-RabbitMQ  sbin   var

etc   INSTALL  LICENSE-Apache-Basho  LICENSE-MIT-EJS10     LICENSE-MIT-jQuery164  LICENSE-MIT-Sammy060  plugins               share

root@vlinux:~/rabbitmq_server-2.8.1# cd sbin

root@vlinux:~/rabbitmq_server-2.8.1/sbin# rabbitmq-server

----- 이렇게 하면 그냥 돈다...



Spring AMQP 설치하기 : 아래 링크로 다운로드후 자신의  java project 에 링크 한후 빌드패스에 추가 합니다.

Spring AMQP Download :  http://s3.amazonaws.com/dist.springframework.org/release/AMQP/spring-amqp-1.0.0.RELEASE.zip



Spring maven Project dependency add



Project Test 

- 저의 경우 SpringMVC RabbitUser 라는 프로젝트로 만든후 테스트 했습니다.



XML Config Define




	
	
	
	
	
	
	



Java User Source

package com.mulder.rabbituser;

import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * ref http://www.slideshare.net/ewolff/the-future-of-messaging-rabbitmq-and-amqp
 * 
 * @author Youngsung
 *
 */

@Service
public class RabbitEx01 {
	
	public String getFoo01() {
		ConnectionFactory connectionFactory = new CachingConnectionFactory();

		AmqpAdmin admin = new RabbitAdmin(connectionFactory);
		//admin.declareQueue("myqueue");
		admin.declareQueue(new Queue("myqueue") );

		AmqpTemplate template = new RabbitTemplate(connectionFactory);
		template.convertAndSend("myqueue", "foo");

		String foo = (String) template.receiveAndConvert("myqueue");
		return foo;
	}

	@Autowired private AmqpTemplate xmlConfigAmqpTemplate;
	public String getFoo02() {
		
		xmlConfigAmqpTemplate.convertAndSend("myXmlConfigQueue", "xmlConfigFoo");

		String foo = (String) xmlConfigAmqpTemplate.receiveAndConvert("myXmlConfigQueue");
		return foo;
	}
}


자,,, 이제 토끼와 대화를 시작 해 보세요...,   이걸루 채팅이나 함 만들어 볼까요 ;0