4.7.3. MDB 구성을 위한 몇 가지 예제 사용 사례

  • 메시지를 수신하는 MDB 사용 사례

    MDB에서 메시지를 수신할 때 기본 시나리오는 JBoss EAP와 함께 제공되는 helloworld-mdb 빠른 시작을 참조하십시오.

  • MDB에서 메시지를 전송하는 사용 사례

    메시지를 처리한 후 다른 비즈니스 시스템에 문의하거나 메시지에 회신해야 할 수도 있습니다. 이 경우 아래 코드 조각과 같이 MDB에서 메시지를 전송할 수 있습니다.

    package org.jboss.as.quickstarts.mdb;
    
    import javax.annotation.Resource;
    import javax.ejb.ActivationConfigProperty;
    import javax.ejb.MessageDriven;
    import javax.inject.Inject;
    import javax.jms.JMSContext;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageListener;
    import javax.jms.Queue;
    
    @MessageDriven(name = "MyMDB", activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "queue/MyMDBRequest"),
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
    public class MyMDB implements MessageListener {
    
        @Inject
        private JMSContext jmsContext;
    
        @Resource(lookup = "java:/queue/ResponseDefault")
        private Queue defaultDestination;
    
        /**
         * @see MessageListener#onMessage(Message)
         */
        public void onMessage(Message rcvMessage) {
            try {
                Message response = jmsContext.createTextMessage("Response for message " + rcvMessage.getJMSMessageID());
                if (rcvMessage.getJMSReplyTo() != null) {
                    jmsContext.createProducer().send(rcvMessage.getJMSReplyTo(), response);
                } else {
                    jmsContext.createProducer().send(defaultDestination, response);
                }
            } catch (JMSException e) {
                throw new RuntimeException(e);
            }
        }
    }

    위의 예에서 MDB는 메시지를 수신한 후 JMSReplyTo 에 지정된 대상 또는 Java Naming 및 Directory Interface name java:/queue/ResponseDefault 에 바인딩된 대상에 응답합니다.

  • 인바운드 연결 재조정을 구성하는 MDB 사용 사례

    @MessageDriven(name="MyMDBName",
        activationConfig =
        {
            @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"),
            @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "queueA"),
            @ActivationConfigProperty(propertyName = "rebalanceConnections", propertyValue = "true")
        }
    )