当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud Stream Kinesis绑定器-并发

钮兴安
2023-03-14

我用以下组件构建了一个spring boot kinesis消费者:

  • Spring boot(版本-2.1.2.Release)
  • Spring cloud(version-greenwich.release)
  • Spring cloud stream kinesis绑定器(版本-1.1.0.发行版)

假设我有3个消费者实例部署到PCF(通过在MANIFEST.YML文件中将instances属性设置为3,这在cf推送期间使用)。

所有3个实例都具有以下属性:

Spring.cloud.stream.Bindings..Consumer.concurrency=5

spring.cloud.stream.bindings..group=my-consumer-group

spring.cloud.stream.kinesis.binder.checkpoint.table=my-metadata-dynamodb-table

spring.cloud.stream.kinesis.binder.locks.table=my-locks-dynamodb-table

假设这些事件是由制片人按以下顺序发送到kinesis的

event5(流中最近的事件)-event4-event3-event2-event1(流中的第一个事件)

    null

共有1个答案

庞乐池
2023-03-14

请参阅KinesisMessageDrivenChannelAdapter中的Concurrency选项JavaDocs:

/**
 * The maximum number of concurrent {@link ConsumerInvoker}s running.
 * The {@link ShardConsumer}s are evenly distributed between {@link ConsumerInvoker}s.
 * Messages from within the same shard will be processed sequentially.
 * In other words each shard is tied with the particular thread.
 * By default the concurrency is unlimited and shard
 * is processed in the {@link #consumerExecutor} directly.
 * @param concurrency the concurrency maximum number
 */
public void setConcurrency(int concurrency) {

因此,由于在一个流中只有一个碎片,因此只有一个活动线程在这个碎片上迭代ShardIterator

关键是我们必须在一个线程中处理来自单个碎片的记录。这样,我们保证了一个正确的顺序,加上检查点是为最高的序号。

请更多地调查什么是AWS Kinesis以及它是如何工作的。

 类似资料:
  • 我得到了这个错误,我知道它的意思 DL已弃用,请使用Fiddle DL已被弃用,请使用Fiddle获取源索引从 rubygems.org/由于错误(2/3)而重试源获取: Bundler::Fetcher::CertificateFailureER ror无法验证<--的SSL 证书plhd--3/>您可能遇到中间人攻击,但最有可能的是您的系统没有验证所需的CA证书。有关 OpenSSL证书的信息

  • 我知道Java和C#,但属性绑定我只知道C#MVVM。我试图理解JavaFX中的属性绑定,使用属性值的自定义getter和setter(就像在C#中一样)。 我创建了以下类: 我的印象是,如果我遵循推荐的JavaBean/JavaFX命名约定,那么绑定系统将足够聪明地使用反射(?)并为该属性使用自定义getter/setter。但是我的视图模型getter/setter从来没有使用过。 在C#中,

  • 我用Artemis绑定器设置了一个Spring云流https://github.com/snowdrop/spring-cloud-stream-binder-artemis.我有两个应用程序,即生产者和消费者。下面是我的application.yml配置 制作人配置 消费者配置 一切正常,即生产者向队列发送数据,消费者能够处理数据,但不反映并发性。当我检查Artemis控制台时,我看到只有一个消

  • 为主机绑定容器端口 默认情况下,Docker容器可以连接到外部区域,但外部区域不能连接到容器。在Docker启动时,由于它在主机上创建了一个iptables伪装规则,使得每一个输出连接看起来都是由主机IP地址建立起来的。 # You can see that the Docker server creates a # masquerade rule that let containers conn

  • 问题内容: 我刚开始使用angularJS,并努力为我要做的事情找出合适的架构。我只有一个页面应用程序,但 URL始终应该保持不变 ;我不希望用户能够导航到根以外的任何路由。在我的应用中,有一个主要的div需要承载不同的视图。访问新视图时,我希望它接管主div中的显示。以这种方式加载的视图可以被丢弃或停留在DOM中,就像隐藏在DOM中一样- 我很想知道每个视图如何工作。 我提出了一个我想做的粗略的

  • if绑定 if绑定应用在页面元素中,并通过表达式判断是否为元素添加子元素的绑定。if绑定在功能上非常像visible绑定,但在实现上却有很大的不同。visible绑定是为元素添加css样式来控制元素是否显示,if绑定是控制元素的字元素,如果表达式为true,则为元素添加子元素,否则清空子元素。 示例代码: //.W片段 <label> <input type="checkbox" bind-c