我正在设计一个分布式传感设备网络。这些设备将生成日志并将它们发送到中央数据库。我正在使用 JMS 传输日志消息。主数据库服务器将运行 MDB(消息驱动 Bean)来处理传入消息。客户端正在使用 GPRS 发送数据。问题是我不希望我的客户处理网络问题。我需要一些在客户端机器上本地运行的中继服务,并立即从客户端获取消息而不阻止它并代表它尝试。(如果网络出现故障,请在一段时间后再次尝试发送)。
message 是一个简单的 java 对象:
public class Message {
public int x;
public int y;
public int z;
}
客户:
Message msg = new Message();
while (True) {
/* sense data */
msg = get_data_from_environment();
/* send data to local relay service
* This is non blocking call */
relay_service.send(msg);
}
本地中继服务:
while (True) {
/* get message from local client */
msg = get_message_from_local_client();
result = send_msg_to_JMS_server(msg);
/* if not successful, persist it on a local queue and try some other time */
if (result.is_sent() != True)
store_msg_on_disk(msg);
}
是否有这样的消息服务或者我应该自己编写中继服务?
在这种情况下使用 JMS 好吗?我应该设计自己的套接字级协议来发送消息吗?