ActiveMQ를 내가 ActiveMQ를 액세스하기 위해 스프링을 사용하고 큐에 새 메시지를 추가하기 전에 대기열에서 엿볼려고 4.1.2JMS ActiveMQ를 createBrowser은 항상 비어있는 큐
5.10.0 봄을 반환합니다. 메시지가 성공적으로 추가되었지만 대기열에 아무 것도 표시되지 않습니다. 웹 인터페이스를 통해 내 메시지가 대기열에 대기 중임을 알 수 있습니다.
감사합니다.
@Service
public class MessageQueueService{
private static final Logger logger = LoggerFactory.getLogger(MessageQueueService.class);
@Inject
JmsTemplate jmsTemplate;
@SuppressWarnings({ "rawtypes", "unchecked" })
public void testAddJob(){
jmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
IndexJob j1=new IndexJob();
j1.setOperation("post");
ObjectMessage om=session.createObjectMessage();
om.setObject(j1);
QueueBrowser qb=session.createBrowser((javax.jms.Queue) jmsTemplate.getDefaultDestination());
Enumeration<Message> messages=qb.getEnumeration();
logger.info("browsing "+qb.getQueue().getQueueName());
int i=0;
while(messages.hasMoreElements()) {
i++;
Message message=messages.nextElement();
logger.info(message+"");
}
logger.info("total record:"+i);
return om;
}
});
}
출력 :
2014-12-07 00:03:43.874 [main] INFO c.b.b.s.MessageQueueService - browsing indexJob 2014-12-07 00:03:43.878 [main] INFO c.b.b.s.MessageQueueService - total record:0
UPDATE : 실행은 아직 잘 설명하지 파라미터 boolean startConnection
있다. "true"로 설정되면 작동하는 것 같습니다.
String result=jms.execute(new SessionCallback<String>() {
@Override
public String doInJms(Session session) throws JMSException {
QueueBrowser queue=session.createBrowser((Queue)session.createQueue("indexJob"));
Enumeration<Message> messages=queue.getEnumeration();
String result="";
logger.info("Browse Queue: "+queue.getQueue().getQueueName());
while(messages.hasMoreElements()) {
Message message=messages.nextElement();
result+=message;
}
logger.info(result);
return result;
}
}, true);
는 send 메소드의 대부분은
startConnection
= 거짓으로
execute()
방법을 사용하고,
org.springframework.jms.core.JmsTemplate.class
소스를 보면 -이 비록 해결책이 아니다.
연결이 시작되지 않은 경우 메시지가 대기열에 어떻게 추가 되었습니까?
누구나 알고 계신가요? @param startConnection whether to start the Connection
?
감사합니다. @Tim. 이해해. 그래서 메시지를 보낼 때 세션으로 대기열을 탐색 할 수 없습니까? – Jason
시작하지 않으면 안됩니다. –