English 中文(简体)
带有中继行为的信息服务
原标题:message service with relay behaviour
  • 时间:2012-05-23 11:38:24
  •  标签:
  • jms

我设计了一个分布式的遥感设备网络。 这些设备将生成日志并将其发送到中央数据库。 I m 使用 JMS 传输日志消息。 主数据库服务器将运行 MDB (Message Livern Bean) 处理收到的信件。 客户正在用 GPRS 发送数据。 问题在于我不想我的客户处理网络问题。 我需要一些在客户机上本地运行的中继服务, 从客户机那里接收信息, 而不屏蔽它, 并代表它进行尝试 。 ( 如果网络已关闭, 稍后再尝试发送 ) 。

信息是一个简单的 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 有效吗? 我应该设计我自己的套接字级别协议来发送信件吗?

最佳回答

<强 > EDIT

是否有这样的信息服务 或者我应该自己写中继服务?

通常情况下,这些类型的中继服务您必须自己编码,除非您能够找到一个软件,完全按照您想要的去做。在这种情况下,这样做并不罕见。

在这种情况下使用JMS是件好事吗?

是的, JMS 是作为中间软件使用的一个非常好的解决方案 。 您可以让许多客户端连接到 JMS 并发送信件到它。 虽然您有一个服务器程序, 正在读取 JMS 上的信息, 处理它, 如果有网络问题, 并处理 。 这也是给服务器程序一个奖金, 并在万一完全失败时将信息发回客户端 。

我应该设计我自己的套接字级别协议来发送信件吗?

我仍然不知道您要发送什么样的信息 。 如果您正在使用 SMTP 、 SMS 、 HTTP 等标准运输工具, 或 HTTP 等, 有图书馆可以帮助您发送和校验发送信息 。 如果您需要使用自定义协议发送信息, 您将不得不写入您的套接字级别代码 。

查看您的代码示例显示, 您想知道您的客户端是否成功将信件发送到 JMS 。 如果没有发送的话, 请保存到磁盘中, 稍后再试 。

JMS 服务器将自动识别信件是否收到。 您可以从 JMS 信件中检查这个消息, 或者它是否失败, 您将会得到 JMS 例外 。 如果您在磁盘上保存信件, 您需要知道何时重新发送这些信件 。 您需要在下一个信件上设置一个计时器或重新发送 。

问题回答

暂无回答




相关问题
How to optimize activemq

I m using ActiveMQ on a simulation of overloading servers in Java. And mainly it goes ok, but when I get over 600 requests the thing just go WTF! I think the bottleneck is my Master Server which is ...

Does Pentaho Kettle have a way to accept JMS messages?

Does Pentaho s ETL system, Kettle (http://kettle.pentaho.org/) have a plugin to accept information from JMS messages? I d like to set up a job that can read messages each containing a hash, extract ...

post message to a remote JMS provider

I want to be able to send messages to a remote JBoss server (JBoss MQ). I can do it for a local one but i m stuck when trying with a remote one. can anyone explain to me how to do it ? are there any ...

PostgreSQL and JMS (Or other Pub-Sub/Callback Mechanism)

I want to have my PostgreSQL server send out notifications when a piece of data changes, preferably over JMS, but also considering any other Pub-Sub mechanism or Callback. Any ideas if this is ...

ActiveMQ Consumer / Producer Connection Listener

I can t seem to find a way to listen for new producer and consumer connections (or connection interrupts) in ActiveMQ (Java Version). I want to be able to tell the consumers (or they can find out ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

热门标签