2016년 2월 7일 일요일

Using JMS by spring boot

You can use java message service by using spring boot.

- Structure
























- Constants.java

package org.blog.test.constant;

public class Constants {

    public static final String MAILBOX_DESTINATION = "mailbox-destination";
}

- JmsReceiver.java

package org.blog.test.jms;

import java.io.File;

import org.blog.test.constant.Constants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
import org.springframework.util.FileSystemUtils;

@Component
public class JmsReceiver {

    @Autowired
    ConfigurableApplicationContext context;

    @JmsListener(destination = Constants.MAILBOX_DESTINATION, containerFactory = "jmsListenerContainerFactory")
    public void receiveMessage(String message) {
        System.out.println("Received : " + message);
        context.close();
        FileSystemUtils.deleteRecursively(new File("activemq-data"));
    }
}

- TestApplication.java

package org.blog.test;

import java.io.File;

import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;

import org.blog.test.constant.Constants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.config.JmsListenerContainerFactory;
import org.springframework.jms.config.SimpleJmsListenerContainerFactory;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.util.FileSystemUtils;

@SpringBootApplication
@EnableJms
public class TestApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }

    @Autowired
    private JmsTemplate jmsTemplate;

    @Bean
    JmsListenerContainerFactory jmsListenerContainerFactory(ConnectionFactory connectionFactory) {
        SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        return factory;
    }

    @Override
    public void run(String... arg0) throws Exception {
        FileSystemUtils.deleteRecursively(new File("activemq-data"));

        MessageCreator messageCreator = new MessageCreator() {

            @Override
            public Message createMessage(Session session) throws JMSException {
                return session.createTextMessage("ping");
            }
        };
        System.out.println("sending a new message");
        jmsTemplate.send(Constants.MAILBOX_DESTINATION, messageCreator);
    }
}

- pom.xml


 4.0.0
 org.blog.test
 jms-project
 0.1.0

 
  org.springframework.boot
  spring-boot-starter-parent
  1.3.2.RELEASE
 
 
  
   org.springframework.boot
   spring-boot-starter
  
  
   org.springframework
   spring-jms
  
  
   org.apache.activemq
   activemq-broker
  
  
   org.projectlombok
   lombok
   1.16.6
  
 

 
  
   
    org.springframework.boot
    spring-boot-maven-plugin
   
  
 


- Execution Result

sending a new message
2016-02-08 12:32:52.082  INFO 4396 --- [           main] org.blog.test.TestApplication            : Started TestApplication in 2.642 seconds (JVM running for 3.073)
Received : ping

original source : https://spring.io/guides/gs/messaging-jms/

댓글 없음 :

댓글 쓰기