Я хотел бы получить совет по этому вопросу: я использую Jbos 5.1.0, EJB3.0
У меня есть система, которая отправляет запросы через UDP на удаленные модемы, и я предполагаю дождатьсяответ от целевого модема.удаленные модемы поддерживают только UDP-вызовы, поэтому я создаю асинхронный механизм.(также, потому что я хочу запросить X модемы параллельно)
это то, что я пытаюсь сделать:
все вызовы извлекаются из базы данных, затем каждый вызов будет добавлен как сообщение в JMSQUE.скажем, я установлю X MDB'S в этой очереди, чтобы я мог работать асинхронно.теперь каждый MDB будет отправлять UDP-запрос на IP-адрес (удаленный модем), который будет проанализирован из сообщения очереди.
, поэтому в основном каждый MDB, который принимает сообщение, отправляет запрос udp на удаленный модем и[b] жду [/ b] ответа от этого модема.
[u] теперь вот БАГ: [/ u]
может произойти сценарий, в котором MDB получит ответ, но не от правильного модема (который он запросил в первую очередь),
этот плохой сценарий вызывает две неправильные вещи:
a.отправитель, который отправил сообщение, будет ждать вечно, так как сообщение никогда не возвращается ему (оно было принято другим MDB).б.MDB, получивший сообщение, не является правильным, и, вероятно, если бы он находился в режиме «слушателя», то он должен был ожидать ответа от другого отправителя (иначе он не получил бы никаких сообщений)
так что, конечно, я могу справиться со всем с помощью механизма RETRY.так что оба mdb (тот, кто получил сообщение от не того отправителя, и тот, кто так и не получил ответ) попытаются снова выполнить эту операцию с надеждой, что в следующий раз она будет успешной.
Этомеханизм, может быть, вы могли бы сказать мне, если есть какой-либо дизайн pattren, или любое другое эффективное решение для этой проблемы?
Спасибо,
луч.