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 namejava:/queue/ResponseDefault에 바인딩된 대상에 응답합니다.인바운드 연결 재조정을 구성하는 MDB 사용 사례
@MessageDriven(name="MyMDBName", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "queueA"), @ActivationConfigProperty(propertyName = "rebalanceConnections", propertyValue = "true") } )