Как написать обработку очереди сообщений объектно-ориентированным способом?

StackOverflow https://stackoverflow.com/questions/346105

  •  19-08-2019
  •  | 
  •  

Вопрос

Если бы вам пришлось написать код, который берет сообщения из очереди сообщений и обновляет таблицу в базе данных, как бы вы ее структурировали?Как бы вы его структурировали?Сообщения представляют собой данные XML, по одному узлу на строку таблицы.Строки в таблице можно было обновлять, удалять или вставлять.

Это было полезно?

Решение

Обычно в ОО-реализациях очередей сообщений вы создаете классы, которые представляют отдельные типы сообщений самостоятельно. Если различные типы сообщений, которые вы ожидаете получить, являются производными друг от друга, это обеспечивает иерархию классов для сообщений.

С помощью основанных на конфигурации сред постоянства вы можете просто настроить постоянство для этих классов напрямую.

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

Другие советы

Не думаю, что вы предоставили достаточно информации для хорошего ответа. Как выглядят сообщения? Они различаются по содержанию / типу, или все они просто & Quot; messages & Quot ;? Они взаимодействуют друг с другом или это просто преобразование формата данных? Одним из ключей к разработке ОО является понимание того, что & Quot; найти существительные-n-глаголы & Quot; игра (а это столько, сколько вы описали) редко приводит к лучшему решению. Это, конечно, не будет худшим, но в итоге вы получите агрегацию данных и кучу процедурного кода.

Процедурный код неплох, хотя. Почему это должно быть ОО? Требует ли сама проблема полиморфизма и сокрытия данных? Есть ли какое-то сложное поведение, которое вы пытаетесь смоделировать? Нет ничего постыдного в том, чтобы использовать решение без ОО, когда проблема проста.

Лучший способ создания объектно-ориентированного кода при обмене сообщениями или работе с любым промежуточным программным обеспечением — это скрыть API промежуточного программного обеспечения из вашего кода и просто иметь дело с бизнес-логикой.

напримерпосмотрите эти примеры

  • Потребление POJO это в значительной степени тот вариант использования, который вы описываете, и
  • ПОЖО Продюсирование если вам когда-нибудь понадобится отправлять сообщения в очередь сообщений.

Тогда вам просто нужно определить, что ваш Объекты передачи данных выглядит как;как вы хотите кодировать передаваемые данные в XML/JSON/что угодно.

Самое замечательное в этом подходе то, что ваш код теперь полностью независим от промежуточного программного обеспечения — вы можете поменять очередь сообщений и использовать база данных, JavaSpace, SEDA в памяти, файлы, любой другой протокол связи или API промежуточного программного обеспечения..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top