in java/core/src/main/java/com/aliyun/openservices/tablestore/agent/memory/MemoryStoreImpl.java [437:471]
public void updateMessage(Message message) {
ValidationUtils.ensureNotNull(message, "message");
ValidationUtils.ensureNotNull(message.getSessionId(), "sessionId");
ValidationUtils.ensureNotNull(message.getMessageId(), "messageId");
if (message.getCreateTime() == null) {
Long createTimeFromSecondaryIndex = getMessageCreateTimeFromSecondaryIndex(message.getSessionId(), message.getMessageId());
if (createTimeFromSecondaryIndex == null) {
throw Exceptions.illegalArgument(
"message is not exist because createTime is null and can't find in secondaryIndex, sessionId:%s, messageId:%s",
message.getSessionId(),
message.getMessageId()
);
}
message.setCreateTime(createTimeFromSecondaryIndex);
}
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn(Message.MESSAGE_SESSION_ID, PrimaryKeyValue.fromString(message.getSessionId()));
primaryKeyBuilder.addPrimaryKeyColumn(Message.MESSAGE_CREATE_TIME, PrimaryKeyValue.fromLong(message.getCreateTime()));
primaryKeyBuilder.addPrimaryKeyColumn(Message.MESSAGE_MESSAGE_ID, PrimaryKeyValue.fromString(message.getMessageId()));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange change = new RowUpdateChange(messageTableName, primaryKey);
List<Column> columns = TablestoreHelper.metadataToColumns(message.getMetadata());
if (message.getContent() != null) {
columns.add(new Column(Message.MESSAGE_CONTENT, ColumnValue.fromString(message.getContent())));
}
change.put(columns);
try {
client.updateRow(new UpdateRowRequest(change));
if (log.isDebugEnabled()) {
log.debug("update message:{}", message);
}
} catch (Exception e) {
throw Exceptions.runtimeThrowable(String.format("update message:%s failed", message), e);
}
}