我对KinesisMessageDrivenChannelAdapter具有以下配置,当我删除dynamoDbMetaDataStore
作为检查点时,可以正确接收消息,但是当我将其添加回记录时,记录始终为空。
我调试了代码,KinesisMessageDrivenChannelAdapter.processTask()
行776(版本2.0.0.M2)返回空记录。
更新:
public DynamoDbMetaDataStore dynamoDbMetaDataStore() {
String url = consumerClientProperties.getDynamoDB().getUrl();
final AmazonDynamoDBAsync amazonDynamoDB = AmazonDynamoDBAsyncClientBuilder.standard()
.withEndpointConfiguration(new EndpointConfiguration(
url,
Regions.fromName(awsRegion).getName()))
.withClientConfiguration(new ClientConfiguration()
.withMaxErrorRetry(consumerClientProperties.getDynamoDB().getRetries())
.withConnectionTimeout(consumerClientProperties.getDynamoDB().getConnectionTimeout())).build();
DynamoDbMetaDataStore dynamoDbMetaDataStore = new DynamoDbMetaDataStore(amazonDynamoDB, "consumer-test");
return dynamoDbMetaDataStore;
}
public KinesisMessageDrivenChannelAdapter kinesisInboundChannel(
AmazonKinesis amazonKinesis, String[] streamNames) {
KinesisMessageDrivenChannelAdapter adapter =
new KinesisMessageDrivenChannelAdapter(amazonKinesis, streamNames);
adapter.setConverter(null);
adapter.setOutputChannel(kinesisReceiveChannel());
adapter.setCheckpointStore(dynamoDbMetaDataStore());
adapter.setConsumerGroup(consumerClientProperties.getName());
adapter.setCheckpointMode(CheckpointMode.manual);
adapter.setListenerMode(ListenerMode.record);
adapter.setStartTimeout(10000);
adapter.setDescribeStreamRetries(1);
adapter.setConcurrency(10);
return adapter;
}
谢谢
答案 0 :(得分:0)
我建议您使用最新的; with cte as
(
select *, rn= row_number() over(partition by CustName order by RecordedTime),
rn2=row_number() over(partition by CustName order by RecordedTime desc)
from records
)
, cte2 as
(
select *, audit='New', History='Change' from cte where rn=1
union
select *, audit='Change', History='Current' from cte where rn2=1 and rn<>1
union
select *, audit='Change', History='before' from cte where rn>1 and rn2<>1
)
select
CustName,
Country,
RecordedTime,
audit,
History
from cte2
order by CustName,RecordedTime
测试解决方案。
已经有类似的选项:
2.0.0.BUILD-SNAPSHOT
您需要在其中注入/**
* Specify a {@link LockRegistry} for an exclusive access to provided streams.
* This is not used when shards-based configuration is provided.
* @param lockRegistry the {@link LockRegistry} to use.
* @since 2.0
*/
public void setLockRegistry(LockRegistry lockRegistry) {
以便进行更好的检查点管理。
为此,您还需要添加此依赖项:
DynamoDbLockRegistry
在compile("com.amazonaws:dynamodb-lock-client:1.0.0")
中确实存在一些过滤问题...