我正在做一个项目,使用springboot、Spring cloud Netflix等来构建微服务。
对于一些异步通信,我使用Spring Cloud Stream来生成和使用事件。e、 g.在合同服务中起草业务合同后,该服务发布一个合同创建事件,该事件将由审计服务使用,以初始化审计过程。此外,用户服务将使用该事件为相关方创建通知。
场景是我有很多事件,消费者会根据事件类型订阅感兴趣的事件。我的问题是,我有许多事件类型,很快,我的配置文件中就会充斥着通道配置。例如
spring.cloud.stream.bindings.creation.destination=contract-creation
spring.cloud.stream.bindings.revocation.destination=contract-revocation
spring.cloud.stream.bindings.termination.destination=contract-termination
...
我做错什么了?我正在考虑这些替代方案:
我在信息传递方面是个新手,希望这里的人们能给我指明一个正确的方向。
David的博客文章中提到的条件
表达式属性被烘焙到@StreamListener
注释中,因此您可以将不同的事件类型从同一个目的地路由到不同的侦听器。
这真的要看情况,我很抱歉以这个开头回答。
使用带有选择器的单个通道是最简单的选择,但需要注意的是,每个消费者都将使用来自该目的地的所有消息。如果这是您的用例,那就去做吧。
另一个用例是事件源类型,其中大多数消费者只对事件的子集感兴趣,您可能会更好地将事件(或更好的聚合根)放置在每个目标上。这将允许您更好地扩展,并避免经纪人与消费者之间不必要的聊天。
在您的示例中,您可以使用以下内容:
public interface Contracts {
@Output("contract-creation") MessageChannel creation();
@Output("contract-revogation") MessageChannel revogation();
@Output("contract-termination") MessageChannel termination();
}
这会为每个eventType创建一个主题,可能有点过头了
也许您应该创建一个类型为的接口事件
,并让事件从中派生出来,然后改为:
public interface Events {
@Output MessageChannel user();
@Output MessageChannel contract();
}
现在,所有合同事件(创建、废除、终止)都将到达相同的目的地。在接收端,您可以创建选择器来选择要应用的选择器:
@StreamListener(target = "contract", condition = "payload.type=='created'")
public void contractCreated(@Payload ContractCreatedEvent){
}
@StreamListener(target = "contract", condition = "payload.type=='terminated'")
public void contractTerminated(@Payload ContractTerminatedEvent){
}
我正在使用Netty框架并实现客户端和服务器。我建立了多达1000个连接。我想在多个地方配置超时值。其中一些我能理解。下面是我的netty实现的netty行为: 1。许多异步连接都是从具有超时的客户端开始的(使用ChannelOption.CONNECT\u timeout\u MILLIS配置) 2。那些能够连接的客户端连接使用channelActive发送HTTP请求,并使用channelRe
你认为这是个好办法吗?你跟着什么?建议用什么来实现不同的事务类型?此外,如何对不同的事务类型实施不同的背书策略? 注意:我知道基于资产(或基于密钥)的认可策略(Fabric V1.4)可以用Chaincode编写。但这不允许我根据事务类型配置认可策略。
问题内容: 我正在尝试决定要选择哪种mime类型来返回mp3数据(由php提供) 根据此mime类型列表:http : //www.webmaster-toolkit.com/mime-types.shtml 这些之间有什么区别,我应该使用哪个? 问题答案: 最好的选择是使用RFC定义的 mime-type 。
我写了以下代码: 我只使用了一个useState在一个对象中存储“name”、“link”、“error”等属性。因为我想将FormObj和ValidateLink的逻辑保持在一起。所有三个属性仅使用一个useEffect。因此,我认为最好将所有三个属性都保留在useState中,而不是创建3个不同的useState。 但是我的经理和技术架构师告诉我要为每个属性创建3个useState,一个use
使用StreamBridge,我将包含两种不同类型的对象的消息发送到单个Kafka主题。有没有办法定义一个能够使用两种类型消息的Spring Cloud Stream的功能消费者?
我和dagger2合作有一段时间了。而且我也搞不清楚要不要为每个activity/片段创建一个自己的组件/模块。请帮我澄清一下: 比如我们有一个app,这个app大概有50个屏幕。我们将按照MVP模式和Dagger2为DI实现代码。假设我们有50个活动和50个主持人。 在我看来,通常我们应该这样组织代码: > 创建AppComponent和AppModule,它们将提供应用程序打开时使用的所有对象