Spring AMQP 사용하기

Spring 2013.12.17 14:15

1. Spring AMQP 이용하여 간단한 채팅구현하기

이번에는 간단한 채팅을 구현해 보았다. 

실행한 뒤 command창에서 "user1:메시지여 전송되라"이렇게 입력해보니 정상적으로 받아 오는 것을 확인 할 수 있었다. 좋은데 ? 

 

public class App {

public static void createUser(AmqpAdmin admin,ConnectionFactory connectionFactory,final String userCode) throws IOException{

admin.declareQueue(new Queue(userCode));

SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();

container.setConnectionFactory(connectionFactory);

container.setQueueNames(userCode);

container.setMessageListener(new MessageListener() {

            public void onMessage(Message message) {

                System.out.println(userCode + " : " + message);

            }

        });

container.start();

}

public static void main(String[] args) throws IOException {

ConnectionFactory connectionFactory = new CachingConnectionFactory();

AmqpAdmin admin = new RabbitAdmin(connectionFactory);

AmqpTemplate userTemplate = new RabbitTemplate(connectionFactory);

createUser(admin, connectionFactory, "user1");

createUser(admin, connectionFactory, "user2");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String message = null;

while (!(message = br.readLine()).isEmpty()) {

String[] messages = message.split(":");

userTemplate.convertAndSend(messages[0], messages[1]);

}

}

 

}

신고

'Spring' 카테고리의 다른 글

Spring AMQP 사용하기  (0) 2013.12.17
Spring AMQP 설치하기  (0) 2013.12.17
RabbitMQ 설치하기  (0) 2013.12.17
에러 처리 하기  (0) 2013.12.17
Spring3.0사용시 404에러 페이지로 안가는 현상발생시  (0) 2010.08.16
Spring에서 java.lang.NoSuchMethodError 에러  (0) 2010.02.01
Posted by genius3k

Spring AMQP 설치하기

Spring 2013.12.17 14:15

Spring AMQP를 사용하여 간단한 채팅 프로그램을 만들어 볼까 한다. 

 

원문 : http://docs.spring.io/spring-amqp/docs/1.2.0.RELEASE/reference/html/quick-tour.html

1. 잽빨리 시작하기

1.1 소개

Spring AMQP를 5분만에 설치하기. 

전제조건: RabbitMQ broker (http://www.rabbitmq.com/download.html)을 설치하고 실행해야한다. spring-rabbit JAR와 그 와 관련된 JAR파일들을 다운받아야 한다. 하단은 메이븐 설정에 추가해주면 자동으로 다운로드 받게 된다.:

<dependency>
  <groupId>org.springframework.amqp</groupId>
  <artifactId>spring-rabbit</artifactId>
  <version>1.2.0.RELEASE</version>
</dependency>

1.1.1 Very, Very Quick

간단한 메시지를 Java를 사용해서 주고 받는 프로그램이다. 아래와 같이 작성후 실행하면 메시지를 받는 것을 확인 할 수 있다. :

ConnectionFactory connectionFactory = new CachingConnectionFactory();

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

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

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

Note that there is a ConnectionFactory in the native Java Rabbit client as well. We are using the Spring abstraction in the code above. We are relying on the default exchange in the broker (since none is specified in the send), and the default binding of all queues to the default exchange by their name (hence we can use the queue name as a routing key in the send). Those behaviours are defined in the AMQP specification.

1.1.2 With XML Configuration

위와 동일한 내용의 소스, 하지만 이건 xml 에서 설정할 수 있도록 되어 있는 것이다. :

ApplicationContext context =
    new GenericXmlApplicationContext("classpath:/rabbit-context.xml");
AmqpTemplate template = context.getBean(AmqpTemplate.class);

template.convertAndSend("myqueue", "foo");

String foo = (String) template.receiveAndConvert("myqueue");
<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/rabbit
           http://www.springframework.org/schema/rabbit/spring-rabbit.xsd
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <rabbit:connection-factory id="connectionFactory"/>

    <rabbit:template id="amqpTemplate" connection-factory="connectionFactory"/>

    <rabbit:admin connection-factory="connectionFactory"/>

    <rabbit:queue name="myqueue"/>

</beans>

The <rabbit:admin/> declaration by default automatically looks for beans of type QueueExchange and Binding and declares them to the broker on behalf of the user, hence there is no need to use that bean explicitly in the simple Java driver. There are plenty of options to configure the properties of the components in the XML schema - you can use auto-complete features of your XML editor to explore them and look at their documentation.

1.1.3 With Java Configuration

이것도 위와 동일하지만 Java 소스에서 설정을 지정할 때:

ApplicationContext context =
    new AnnotationConfigApplicationContext(RabbitConfiguration.class);
AmqpTemplate template = context.getBean(AmqpTemplate.class);

template.convertAndSend("myqueue", "foo");

String foo = (String) template.receiveAndConvert("myqueue");
@Configuration
public class RabbitConfiguration {

    @Bean
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory =
            new CachingConnectionFactory("localhost");
        return connectionFactory;
    }

    @Bean
    public AmqpAdmin amqpAdmin() {
        return new RabbitAdmin(connectionFactory());
    }

    @Bean
    public RabbitTemplate rabbitTemplate() {
        return new RabbitTemplate(connectionFactory());
    }

    @Bean
    public Queue myQueue() {
       return new Queue("myqueue");
    }
}


신고

'Spring' 카테고리의 다른 글

Spring AMQP 사용하기  (0) 2013.12.17
Spring AMQP 설치하기  (0) 2013.12.17
RabbitMQ 설치하기  (0) 2013.12.17
에러 처리 하기  (0) 2013.12.17
Spring3.0사용시 404에러 페이지로 안가는 현상발생시  (0) 2010.08.16
Spring에서 java.lang.NoSuchMethodError 에러  (0) 2010.02.01
Posted by genius3k

RabbitMQ 설치하기

Spring 2013.12.17 14:13

1. RabbitMQ 설치하기 

1.1 소개

자세한 소개는 사이트에 잘나왔으니.. 해당 프로그램은 얼랭으로 제작되었는데 파일안에 얼랭이 들어가 있으니 별도로 설치를 해줄필요가 없다고 한다.

1.2 설치방법

1. 현재 사용하는 컴퓨터가 맥이므로 http://www.rabbitmq.com/install-standalone-mac.html에 접속한뒤 아래 파일은 클릭! 다운로드 완료 후 압축 풀기

2. 서버 시작 방법
sbin/rabbitmq-server를 실행하면 서버가 시작되어야 하지만 해보니 아래와 같은 에러 발생



에러를 보니 host를 못 찾는 다고 하여 /etc/hosts에 추가해서 다시 실행하니 정상작동된다.아래와 같이 출력되면 실행 끝



신고

'Spring' 카테고리의 다른 글

Spring AMQP 사용하기  (0) 2013.12.17
Spring AMQP 설치하기  (0) 2013.12.17
RabbitMQ 설치하기  (0) 2013.12.17
에러 처리 하기  (0) 2013.12.17
Spring3.0사용시 404에러 페이지로 안가는 현상발생시  (0) 2010.08.16
Spring에서 java.lang.NoSuchMethodError 에러  (0) 2010.02.01
Posted by genius3k

에러 처리 하기

Spring 2013.12.17 14:10

톰캣에서 에러 페이지 설정을 한다. 

 

<error-page>
    <location>/error</location>
</error-page>

아래과 같이 ErrorControler를 선언하고 request 인스턴스에 담겨 있는 정보중 에러 관련 정보를 HashMap에 담아 객체를 리턴한다. ResponseBody 어노테이션이 선언되어 있기에 결과는 json 타입이 된다. 요청종류에 분기가 필요할 경우 RequestMaping에 설정을 추가하면 된다. 

@Controller
public class ErrorController {

    @RequestMapping(value="/error", produces="application/json")
    @ResponseBody
    public Map<String, Object> handle(HttpServletRequest request) {

        Map<String, Object> map = new HashMap<String, Object>();
        map.put("status", request.getAttribute("javax.servlet.error.status_code"));
        map.put("reason", request.getAttribute("javax.servlet.error.message"));

        return map;
    }

}

 


신고

'Spring' 카테고리의 다른 글

Spring AMQP 사용하기  (0) 2013.12.17
Spring AMQP 설치하기  (0) 2013.12.17
RabbitMQ 설치하기  (0) 2013.12.17
에러 처리 하기  (0) 2013.12.17
Spring3.0사용시 404에러 페이지로 안가는 현상발생시  (0) 2010.08.16
Spring에서 java.lang.NoSuchMethodError 에러  (0) 2010.02.01
Posted by genius3k
Spring3.0에 약간의 버그? 암튼 모 이런게 있어서

톰캣에
<error-page>
<error-code>404</error-code>
<location>/404.html</location>
</error-page>
이렇게 설정을 하여도 404.html파일의 크기가
512 bytes를 넘지 않으면
IE,Crome에서 접속할때 브라우저의 내장된 404페이지가 뜬다.
고로~ 404에러 발생시 404.html페이지로 가게 할려면 파일 크기를 늘려줄것~!
신고

'Spring' 카테고리의 다른 글

Spring AMQP 사용하기  (0) 2013.12.17
Spring AMQP 설치하기  (0) 2013.12.17
RabbitMQ 설치하기  (0) 2013.12.17
에러 처리 하기  (0) 2013.12.17
Spring3.0사용시 404에러 페이지로 안가는 현상발생시  (0) 2010.08.16
Spring에서 java.lang.NoSuchMethodError 에러  (0) 2010.02.01
Posted by genius3k

2010-01-29 17:23:32.398:INFO::Opened /user/jetty-6.1.22/logs/2010_01_29.request.log
2010-01-29 17:23:32.413:INFO::Started SelectChannelConnector@0.0.0.0:8888
2010-01-29 17:24:17.515:INFO:/:Initializing Spring FrameworkServlet 'dispatcher'
[2010-01-29 17:24:17]   INFO    [FrameworkServlet.java.initServletBean():231]   FrameworkServlet 'dispatcher': initialization started
2010-01-29 17:24:17.519:WARN::Error for /login.do
java.lang.NoSuchMethodError: org.springframework.web.context.ConfigurableWebApplicationContext.addApplicationListener(Lorg/springframework/context/ApplicationListener;)V

특정서버에서 잘돌아가던 웹어플을 다른 서버로 이전하고 접속하려하니 다음과 같은 에러가 지속적으로 발생하였다.
서버 시작시 에러는 없었기때문에 환경설정문제라고 판단하고 Java sdk및 웹서버 버전을 맞추어서 다시 해보았지만 효과는 없었다.

구글검색중 라이브러리 버전 충돌시 위와 같은 에러가 날수 있다는 글을 보고 spring의 라이브러리를 정리하니 아주 잘되었다..

귀찮다고 라이브러리 다박지말고 필요한것만 넣는 습관을 ;;; 길러야 것다.
신고

'Spring' 카테고리의 다른 글

Spring AMQP 사용하기  (0) 2013.12.17
Spring AMQP 설치하기  (0) 2013.12.17
RabbitMQ 설치하기  (0) 2013.12.17
에러 처리 하기  (0) 2013.12.17
Spring3.0사용시 404에러 페이지로 안가는 현상발생시  (0) 2010.08.16
Spring에서 java.lang.NoSuchMethodError 에러  (0) 2010.02.01
Posted by genius3k

티스토리 툴바