1. ActiveMQ 프로젝트를 다운로드 받습니다.(브로커를 실행해야 하기 때문에...)
2. Writer 작성하기
3. Reader 작성하기
4. bean 설정하기
    4-1. MessageListenerAdapter 로 Reader 등록하기.
    4-2. Writer 등록하기.
    4-3. ActiveMQConnectionFactory 등록하기.
    4-4. ActiveMQQueue 등록하기.
    4-5. Message Converter 등록하기.
    4-6. JMS Template 등록하기.
    4-7. Message Listener Container 등록하기.
5. 테스트.
    5-1. ActiveMQ 브로커 실행.
    5-2. 테스트 클래스 실행.

등록할 bean들이 조금 많지만, 다들 몇 줄 안 되고 필요한 이유를 알게 된다면 그리 어렵지 않습니다.

1. ActiveMQ 다운로드
http://activemq.apache.org/activemq-411-release.html

2. Writer 작성하기.

public class MessageWriter {

    private JmsTemplate jmsTemplate;

    public void setJmsTemplate(JmsTemplate jmsTemplate) {
        this.jmsTemplate = jmsTemplate;
    }

    public void write(DTO dto){
        jmsTemplate.convertAndSend(dto);
    }
}

3. Reader 작성하기.

public class MessageReader {

    public void readMessage(DTO dto){
        DTO recievedDto = (DTO)dto;
        System.out.println(recievedDto.getName());
    }
}

Writer의 경우 스프링 API(JmsTemplate)에 종속성이 생겨서 사알짝 POJO라고 할 수 있지만, Reader의 경우는 완전한 POJO입니다.

4. bean 설정하기.

4-1. MessageListenerAdapter 로 Reader 등록하기.

    <bean id="messageReader"
        class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
        <property name="delegate">
            <bean class="MessageReader" />
        </property>
        <property name="defaultListenerMethod" value="readMessage" />
        <property name="messageConverter" ref="dtoConverter" />
    </bean>

4-2. Writer 등록하기.

    <bean id="messageWriter" class="MessageWriter">
        <property name="jmsTemplate" ref="jmsTemplate" />
    </bean>

4-3. ActiveMQConnectionFactory 등록하기.

    <bean id="connectionFactory"
        class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://localhost:61616" />
    </bean>

4-4. ActiveMQQueue 등록하기.

    <bean id="queue"
        class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg index="0" value="whitehsip.test.queue1" />
    </bean>

4-5. Message Converter 등록하기.
    <bean id="dtoConverter" class="DtoConverter" />

4-6. JMS Template 등록하기.

    <bean id="jmsTemplate"
        class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="connectionFactory" />
        <property name="defaultDestination" ref="queue" />
        <property name="messageConverter" ref="dtoConverter" />
    </bean>

4-7. Message Listener Container 등록하기.

    <bean
        class="org.springframework.jms.listener.SimpleMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory" />
        <property name="destination" ref="queue" />
        <property name="messageListener" ref="messageReader" />
    </bean>

5. 테스트.

5-1. ActiveMQ 브로커 실행.
다운받은 ActiveMQ의 bin 폴더의 activemq.bat 파일을 실행합니다.

5-2. 테스트 클래스 실행.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/springContext.xml"})
public class QueueTest {

    @Autowired
    private MessageWriter messageWriter;

    @Test
    public void testActiveMQJMS() throws Exception {
        DTO sendingDto = new DTO();
        sendingDto.setName("기선");
        messageWriter.write(sendingDto);
    }

}

콘솔창에 "기선" 이라고 찍히면 됩니다.