Java 在消息中发送一段代码

Java 在消息中发送一段代码,java,python,jms,message,amqp,Java,Python,Jms,Message,Amqp,我不确定这是否合理,但在某些情况下,通过消息(AMQP、JMS、ZeroMQ)发送一段代码很有意义 我们通常使用消息作为普通数据,它是由原语(例如,整型、长型、字符串…)组成的信息。纯数据的问题在于它不能表示逻辑。例如,我有一条信息,如 class OperationMsg { String conditionA; String conditionB; String conditionC; } 服务A将此消息发送给其他服务,以指示它们执行某些操作。操作流不仅取决于

我不确定这是否合理,但在某些情况下,通过消息(AMQP、JMS、ZeroMQ)发送一段代码很有意义

我们通常使用消息作为普通数据,它是由原语(例如,整型、长型、字符串…)组成的信息。纯数据的问题在于它不能表示逻辑。例如,我有一条信息,如

class OperationMsg {
     String conditionA;
     String conditionB;
     String conditionC;
}
服务A将此消息发送给其他服务,以指示它们执行某些操作。操作流不仅取决于消息中封装的条件,还取决于服务当前拥有的上下文。然后,每个服务都必须进行硬编码,如:

if (msg.conditionA == something && self.context.someContext == something) {
   doSomethingA();
} else if (msg.conditionB == somethind && msg.conditionA != something && self.context.sometContext == something) {
   doSomethingB();
}
如果我们想将这些代码与服务解耦,我们必须使用一些访问者模式(GoF),然而,这是不可能的,因为我们通过消息进行通信,并且每个服务可能不在同一进程或机器中

所以我在想,我们是否可以在消息中发送代码,类似于访问者模式,但通过消息。对于像Python这样的动态语言,它是可行的,因为eval()函数,对于像Java这样的静态语言,它要困难得多,我正在考虑使用一些表达式语言


但是,我不确定这个想法听起来是否奇怪,请随意分享您的想法。

我不建议在消息负载中表示逻辑。存在代码注入问题的可能性,从SCM的角度来看,在通常自由形式的消息中表示逻辑似乎更混乱,等等

您可以使用路由键在更高的级别(在某种程度上)表示逻辑


i、 e.您可以在路由密钥中包含常规类型,然后您的代码可以解析路由密钥并相应地处理逻辑。这样,消息会影响逻辑,但并不包含实际的逻辑本身。

我不建议在消息负载中表示逻辑。存在代码注入问题的可能性,从SCM的角度来看,在通常自由形式的消息中表示逻辑似乎更混乱,等等

您可以使用路由键在更高的级别(在某种程度上)表示逻辑


i、 e.您可以在路由密钥中包含常规类型,然后您的代码可以解析路由密钥并相应地处理逻辑。这样,消息会影响逻辑,但并不包含实际的逻辑本身。

我不建议在消息负载中表示逻辑。存在代码注入问题的可能性,从SCM的角度来看,在通常自由形式的消息中表示逻辑似乎更混乱,等等

您可以使用路由键在更高的级别(在某种程度上)表示逻辑


i、 e.您可以在路由密钥中包含常规类型,然后您的代码可以解析路由密钥并相应地处理逻辑。这样,消息会影响逻辑,但并不包含实际的逻辑本身。

我不建议在消息负载中表示逻辑。存在代码注入问题的可能性,从SCM的角度来看,在通常自由形式的消息中表示逻辑似乎更混乱,等等

您可以使用路由键在更高的级别(在某种程度上)表示逻辑


i、 e.您可以在路由密钥中包含常规类型,然后您的代码可以解析路由密钥并相应地处理逻辑。这样,消息会影响逻辑,但不包含实际逻辑,本身。

我听起来合理但危险-有人可能发送恶意代码。我听起来合理但危险-有人可能发送恶意代码。我听起来合理但危险-有人可能发送恶意代码。我听起来合理但危险-有人可能发送恶意代码。除此之外,还有content type属性对于消息,可以类似地使用(ab)。除此之外,还有消息的内容类型属性,可以类似地使用(ab)。除此之外,还有消息的内容类型属性,可以类似地使用(ab)。除此之外,还有消息的内容类型属性,可以是(ab)类似地使用。