WebSphere MQ Low Latency Messaging - есть ли у него JMS (или подобный JMS) API? - PullRequest
5 голосов
/ 09 октября 2009

В настоящее время мы используем IBM MQ через JMS, но, кажется, проталкиваем больше сообщений, чем он может обработать - странно, проблема кажется неустойчивой.

Сообщения являются ценами и, следовательно, не должны быть гарантированы, просто должны быть отправлены быстро.

Поскольку у IBM есть продукт с низкой задержкой , мне интересно, возможно, это лучшее решение - но, похоже, у него нет API-интерфейса JMS или, по крайней мере, его не так легко увидеть.

Кто-нибудь знает, есть ли API JMS в продукте с низкой задержкой или «уникальный» API, который у него есть, похож на JMS ...

В качестве альтернативы, будут также полезны указатели для настройки MQ ...:)

Ответы [ 3 ]

5 голосов
/ 10 октября 2009

Определенно, продукт для обмена сообщениями с низкой задержкой будет лучше подходить для вашей проблемы, я работаю над проектом, в котором мы делаем нечто очень похожее, используя продукт для обмена сообщениями с низкой задержкой, называемый LBM от 29West . У него нет API-интерфейса JMS, и я подозреваю, что большинство продуктов в пространстве с низкой задержкой не будет. Существует большое количество функций, которые не имеют смысла в сочетании с этими типами продуктов (например, постоянство, селекторы и т. Д.). Мы обнаружили, что написание нашего собственного простого API поверх продукта для обмена сообщениями довольно просто и дает гибкость при последующем изменении продуктов, что освобождает нас от большей части и многословности API JMS.

Другим вариантом для рассмотрения будет JGroups .

29West добавили поддержку JMS в свою линейку продуктов для обмена сообщениями.

1 голос
/ 16 сентября 2015

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

.

Тем не менее, насколько я помню, весь смысл MQ был гарантированная доставка . Для этого есть время и место, но оно требует затрат с точки зрения задержки и пропускной способности.

У LLM принципиально иное назначение; он имеет надежную доставку : то есть, если он не доставляет, вы просто будете знать, что он не доставил. Восстанавливаемость этих сообщений ограничена только тем, насколько вы готовы хранить в кэше или отзыве с диска и, следовательно, сколько времени вы готовы терпеть ожидание восстановления, пока вы задерживаете свой процесс. В вашем случае вам может не потребоваться восстановление. Подходит ли вам LLM или нет, я не могу предположить. Что я могу сказать, так это то, что с моей точки зрения, как прошлого разработчика, а затем как клиента, я почти не обнаружил сходства между ними, а производительность LLM для такого рода приложений полностью выбила MQ из воды. Я также никогда не использовал сторону java / jms очень сильно и был сосредоточен на C / C ++, так что примите это с большой долей соли. Я просто знал, что это сделал и где искать в гугле.

http://www -01.ibm.com / поддержка / knowledgecenter / SSQPD3_2.6.0 / com.ibm.wllm.doc / API / Javadoc / сообщений / ком / IBM / LLM / JMS / пакет-резюме. HTML

Пакет com.ibm.llm.jms Описание

Реализация общедоступных классов, специфичных для провайдера, для клиента JL LLM.

Большинство интерфейсов, используемых в JMS, определяются общей JMS интерфейсы. Однако спецификация JMS не включает классы и интерфейсы, необходимые для настройки клиента JMS.

См. Документацию JMS API для получения информации о классах JMS. и методы.

Введение

Клиент LLM JMS предоставляет интерфейс службы сообщений Java (JMS) для LLM. Использование интерфейса JMS для LLM позволяет создать общий интерфейс с другие провайдеры сообщений и ускоряет разработку приложений позволяя разработчикам использовать интерфейсы, с которыми они знакомы. С помощью интерфейс JMS работает лучше всего для приложений, которые используют универсальные функция обмена сообщениями, где настройки могут управляться централизованно. Это включает в себя множество традиционных клиентских приложений. Клиент LLM JMS не работает, где приложение зависит от LLM конкретные функции или которые требуют значительного применения взаимодействие с LLM. Хотя есть некоторая задержка, добавленная с помощью Интерфейс JMS, он по-прежнему обеспечивает очень низкую задержку и высокую пропускную способность сообщения.

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

LLM основан на непосредственном обмене сообщениями между производителем и потребителем. JMS является обычно реализуется с помощью сервера сообщений и функции JMS, которая требует, чтобы сервер сообщений был недоступен при использовании LLM JMS клиент. Это включает в себя все сообщения точка-точка (очереди), а также функция восстановления. Клиент LLM JMS предназначен для работы в JSE окружение и не поддерживает серверные расширения приложений или XA сделки.

Как клиент LLM JMS реализует JMS

Клиент LLM JMS реализует каждый из основных объектов JMS с класс реализации, который не предоставляется внешне. подклассы этих объектов реализуются с использованием того же класс реализации. Это означает, что есть только два объекты, ConnectionFactory и Destination. Определено LLM ConnectionFactory может быть приведен к TopicConnectionFactory и QueueConnectionFactory, и назначение, определенное LLM, может быть приведено к Тема и Очередь. То же самое верно для соединения, сеанса, MessageProducer и MessageConsumer. Объект назначения от одногоПоставщик должен использоваться с подключением одним и тем же поставщиком. Тем не мение, можно отправить сообщение, созданное одним провайдером JMS, другой провайдер JMS. Отправка сообщения, созданного другим JMS провайдер не так эффективен, как отправка сообщения, созданного LLM JMS-клиент, но эта функция предусмотрена для упрощения приложение для моста от одного провайдера к другому.

Клиент LLM JMS не реализует обмен сообщениями точка-точка модель (очереди), но все объекты JMS могут быть созданы.

Клиенту LLM JMS требуется JVM не ниже Java 5.

Клиент LLM JMS определяет все шесть объектов типа сообщения (Сообщение, BytesMessage, MapMessage, ObjectMessage, StreamMessage и Текстовое сообщение). При отправке сообщения из JMS в JMS, заголовок JMS указывает тип сообщения. Если отсутствует заголовок JMS (который обычно при отправке сообщения от производителя, не являющегося JMS) JL LLM клиент пытается определить тип сообщения из содержимого. Обычно сообщение будет отображаться как BytesMessage, но если сообщение начать с спецификации UTF-8 или, по-видимому, XML, это будет интерпретироваться как текстовое сообщение. Предполагается, что текстовые сообщения закодированы в UTF-8 ......

1 голос
/ 13 июня 2010

Что касается "указателей для настройки MQ", на странице SupportPacs приведены оценки производительности для каждой платформы с конкретными рекомендациями. Прокрутите вниз до SupportPacs с именем MP * и найдите соответствующую версию и платформу. Разнообразные сценарии тестируются с большими и маленькими сообщениями, постоянными и непостоянными, изменениями в количестве получателей и вводчиков и т. Д.

...