我需要使用gRPC从不同类型但语义相关的服务器获取一些数据。你可以把它看作是一个数据类型,可以有a、B和C。我在想,将这些数据传输到客户机的正确方法是什么。我个人可以想出三种不同的方法:
one of
的单个消息:在这个方法中,我只定义了一条消息,如下所示:
message MyData {
oneof test_oneof {
DataA a = 1;
DataB b = 2;
DataC c = 3;
}
}
现在我只添加了一个rpc方法,它可以获取不同类型的数据。这种方法的问题是可扩展性。我将无法通过向此处所述的oneof
添加新的消息类型DataD
来更新我的消息(或者至少这是我所理解的,尽管我认为oneof
在这种限制下会毫无用处)。
任何
的单个消息:在这个方法中,我只定义了一条消息,如下所示:
import "google/protobuf/any.proto";
message MyData {
google.protobuf.Any data = 1;
}
在这里,我需要一个单一的rpc方法。这种方法也是可扩展的,但缺点是任何
类型仍在开发中。此外,由于需要反射代码,代码会更复杂。
在这个方法中,我只为每种数据类型定义一个rpc调用。这个方法也是可扩展的,但它会创建大量类似的代码,我个人一点也不喜欢它。我个人认为,由于这些数据在语义上是相关的,所以需要使用单个rpc调用来传输它们。
很难说哪一个是最好的,因为他们有自己的优点和缺点。但是,一般来说,在这种情况下,建议使用多个rpc调用,因为客户端很清楚如何使用它们,并且以后很容易扩展它们。不过,您仍然可以将其中一些参数组合到带有可选参数的rpc中。一旦每个消息都有多个RPC,就可以让一个公共处理程序不重复代码。
使用StreamBridge,我将包含两种不同类型的对象的消息发送到单个Kafka主题。有没有办法定义一个能够使用两种类型消息的Spring Cloud Stream的功能消费者?
我是rabbitmq新手,正在尝试以下场景 -- 如果逻辑失败-重新排队 -- 我已经使用SpringRabbitTemplate实现了基本发送器 对于消费者,我实现了一个消息侦听器 并通过Spring将其添加到容器中 直到这部分工作正常。 现在,如果侦听器中提到的**我自己的逻辑**失败。我想重新询问这个消息。我如何实现这一点。从我浏览过的博客来看,似乎需要覆盖returnedMessage。但
我有多个制作人,可以向一个Kafka主题发送多种类型的事件。 我有一个消费者,它必须消费所有类型的消息。每种类型的消息都有不同的逻辑。 但在这种情况下,所有消息都指向此方法,不仅是EventOne 如果我实现了两种方法(对于每种类型的消息),那么所有消息都只能使用一种方法。 如果我像这样实现监听器: 然后我得到一个例外:org。springframework。Kafka。KafkaListener
我们有SOAP webservice,我们的方法首先是WSDL。下面你可以看到从wsdl通过wsdl到java插件生成的请求对象pom.xml.这就是请求对象的样子: @XmlRootElement(name="XXXRequest")公共类GetXXXRequest{ 类型请求是ENUM。现在TypeOfRequest有7个值。让我们说用户发送任何其他值,而不是在TypeOfRequest中为它
我正在使用GRPC Java,希望使用拦截器验证请求。 许多这样的链接告诉我们使用onMessage()访问请求的方法,但我想知道他们在做什么来验证请求。 此外,onMessage()中的消息参数是通用的,我不能直接访问请求字段参数,但必须使用一些if-else/switch case键入消息,然后分别对每个字段应用检查,这是我现在的最后一个选项。 例如,下面是一个示例原型文件: 另外,我简单地打
我使用下面的代码发出http请求,但当抛出异常时,我无法获取每个字段的错误消息。在postman中,它确实显示了正确的错误消息: 它只是显示消息“” 然而,在《邮递员》中,它显示: