Универсальный JMS-клиент - PullRequest
5 голосов
/ 22 марта 2010

Кто-нибудь знает, выполнимо ли написать Универсальный клиент JMS - т.е. тот, который работает с JMS от разных провайдеров (например, Sonic, IBM SIB, Jboss и т. д.)?

Каждый раз, когда я пишу код клиента JMS, он всегда очень специфичен для реализации с зависимыми JAR и классами контекста.

Спасибо.

Ответы [ 4 ]

9 голосов
/ 22 марта 2010

Что ж, одна из лучших практик (по крайней мере, для меня) - это использовать не-arg InitialContext конструктор и поместить специфичные для провайдера вещи (такие как исходная фабрика контекста и URL провайдера) в jndi.properties файл на пути к классам вместо жесткого кодирования этих вещей. Вам также нужно будет поместить «правильные» JAR-файлы JMS-провайдера в путь классов. Другими словами, вы можете иметь общий код, но вам все равно нужно настроить среду выполнения (если вы не запускаете свой клиентский код в контейнере, таком как Spring).

7 голосов
/ 22 марта 2010

2 хороших ответа уже, но я хотел бы добавить немного объяснения.JMS - это стандарт API, он не определяет проводной протокол к серверу.Поэтому во всех реализациях JMS используются разные проводные протоколы, поэтому вам всегда будут нужны специфичные для поставщика JAR.Невозможно создать клиентскую библиотеку JMS, совместимую со всеми провайдерами JMS.В исходном коде вы должны избегать специфичных для поставщика функций (например, TIBCO EMS позволяет вам получать доступ к адресатам с не-JNDI, собственными именами и имеет пользовательские режимы подтверждения).Если вы всегда используете поиск JNDI, то только тип JNDI URL и имя фабрики начального контекста будут зависеть от типа сервера.

4 голосов
/ 05 января 2011

Для тех, кто ищет универсальный клиент в будущем, попробуйте HermesJMS , который поставляется с плагинами для основных поставщиков JMS (ActiveMQ, WebSphere MQ и т. Д.)

4 голосов
/ 22 марта 2010

Это то, для чего Spring . У вас будет конкретная реализация, но код должен быть таким же. См. 19,6 JMS и 21. JMS (служба сообщений Java) из Spring 3.0 Reference .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...