Как обсуждалось в этих потоках; в настоящее время нет шлюзов для UDP, только адаптеры каналов. Шлюзы используются для двусторонней интеграции.
Для UDP-шлюзов на протяжении многих лет не было никакого спроса.
Мы сделали make some changes, чтобы пользователи могли отвечать на входящие сообщения (добавив порт отправки как заголовок).
Это позволит вам построить DatagramPacket
(возможно, используя SI DatagramPacketMessageMapper
) и отправить его в исходную систему, используя собственный код.
Если вы хотите, чтобы мы пересмотрели предоставление шлюзов UDP, сделайте комментарий к JIRA Issue. Еще лучше, рассмотрите contributing.
EDIT
Для асинхронных присылает вам не нужен шлюз; покупайте, вам нужно настроить обработчик и обработчик сообщений, который встроен в исходящий адаптер.
Измените DatagramPacketMessageMapper
here, чтобы установить socketAddress
используя заголовки сообщений; и добавьте опцию в UnicastSendingMessageHandler
, чтобы она не безоговорочно установила destinationAddress
here.
Вы можете сделать это путем подклассификации обработчика и переопределения метода send()
.
Затем вы можете подключить настроенный обработчик сообщений к <service-activator/>
, используя атрибут ref
.
Вау! Спасибо, Гэри, за очень быстрый ответ! Я очень хотел бы внести свой вклад. Или попробуй хотя бы. Я прочитал общие правила для авторов, но мог ли ты указать мне какой-то пример шлюза, на котором я мог бы основываться? Или дайте мне какой-нибудь быстрый совет, где я должен смотреть в существующем коде SI? Я должен иметь возможность отправлять ответы от того же порта, что и порт «udp-inbound-channel-adapter». Я также должен иметь возможность отправлять датаграммы с сервера на клиенты асинхронно. – yu55
См. Изменение в моем ответе. –
Спасибо, Гэри. Надеюсь, скоро я попытаюсь что-то выяснить. – yu55