Я экспериментировал с Message Driven Beans, чтобы получать сообщения о подписке по темам из внешнего экземпляра ActiveMQ.JMS Подписка на тему Tomee 1.7.1
Мои тесты начались с подписки на очереди, которая работает довольно хорошо.
Тогда я хотел попробовать подписку на тему, но я не могу заставить ее работать.
Это то, что у меня есть:
Conf/tomee.xml
<tomee>
<Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
BrokerXmlConfig =
ServerUrl = tcp://192.168.1.176:61616
</Resource>
<Resource id="MyJmsConnectionFactory" type="javax.jms.ConnectionFactory">
ResourceAdapter = MyJmsResourceAdapter
</Resource>
<Container id="MyJmsMdbContainer" ctype="MESSAGE">
ResourceAdapter = MyJmsResourceAdapter
</Container>
<Resource id="MyQueue" type="javax.jms.Queue"/>
<Resource id="MyTopic" type="javax.jms.Topic"/>
</tomee>
Это MDB:
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
@MessageDriven(mappedName = "MyTopic", activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic")
}
)
public class TestMDBTopic implements MessageListener {
public TestMDBTopic() {
super();
}
public void onMessage(Message message) {
System.out.println("TOPIC\tMESSAGE: " + message);
}
}
Я не знаю, почему, но из журнала я могу видеть что TomEE создает очередь вместо темы:
Nov 19, 2014 11:17:00 PM org.apache.openejb.config.AutoConfig logAutoCreateResource
INFO: Auto-creating a Resource with id 'MyTopic' of type 'javax.jms.Queue for 'TestMDBTopic'.
Еще одним доказательством этого является то, что сервер не будет запускаться при добавлении конфигурации продолжительность:
@ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable")
Сервер затем жалуется, что это не подходит для заданного типа javax.jms.Queue.
Я также попытался сделать ThemeConsumer глупым простым методом почты, который работал отлично. Также, когда я удаляю конфигурацию очереди (MyQueue) из всех файлов конфигурации, это не имеет никакого значения.
Кто-нибудь знает, что я делаю неправильно?