我在文档中找不到足够的关于artemis事务的信息。我不清楚artemis交易是如何工作的,所以我想澄清一下。org.apache.activemq.artemis.api.core.client.clientSession
类中有两个方法:
/**
* Commits the current transaction, blocking.
*
* @throws ActiveMQException if an exception occurs while committing the transaction
*/
void commit() throws ActiveMQException;
和
/**
* Rolls back the current transaction.
*
* @throws ActiveMQException if an exception occurs while rolling back the transaction
*/
void rollback() throws ActiveMQException;
我找不到任何开始交易的方法,我也不知道阿尔特弥斯的交易到底是什么。哪些操作可以提交或回滚?
我已经测试了几个场景,我有了我的结论。有两个操作可以提交或回滚:消息发送和消息接收(确认)。方法clientsession#commit
和clientsession#rollback
仅用于提交和回滚消息发送和确认。开始事务不需要任何方法。只有可以提交或回滚的未提交消息。在会话创建期间可以使用的两个参数AutoCommitSenst和AutoCommitTacks对于artemis事务是必不可少的。
让我们考虑消息接收。
如果AutoCommittacks设置为true,则clientsession#commit
和clientsession#rollback
不执行任何操作。
如果AutoCommittacks设置为false,则必须在消息确认之后调用ClientSession#Commit
方法(ClientMessage#Acknowled
)以真正确认消息。方法clientsession#commit
提交所有已确认(在此会话中)和未提交的消息。可以通过调用clientsession#rollback
方法来回滚消息确认。方法clientsession#rollback
回滚所有已确认(在此会话中)和未提交的消息。
===Edit===
我删除了这个问题中与确认和个人确认有关的部分,因为它与主要问题无关,使我的问题过于复杂。
没有方法用Artemis核心ClientSession
“启动”事务。如果autocommitsenters
或autocommittacks
为false
,则创建会话后执行的任何发送或ack都将是事务的一部分,直到调用commit()
或rollback()
。根据为AutoCommitSenters
和AutoCommitTacks
设置的值,发送和acking可以是同一个事务的一部分,也可以是其中之一。
如果发送或acks的autoCommit为true
,那么调用commit()
或rollback()
不会对相应的操作产生任何功能影响。但是,客户端仍然会将命令发送给代理,并等待代理的响应。客户机有责任不调用这些操作,除非确实有必要。
今天遇到一些问题,我需要知道它们之间的具体区别 < code >编译“com . firebase:firebase-client-Android:2 . 4 . 0” 和 不要注意版本 所以请分享你的知识。
我有一个非常简单的(现有的)web服务,我希望使用JDK8生成一个web服务客户机。 我使用的是纯JDK8工具链,这意味着我使用的是JDK8目录中的wsimport工具。 现在问题来了:JDK8中的wsimport工具生成的Java源代码不符合JDK8 Javadoc。正如您可能知道的那样,Javadoc工具在JDK8中变得更加严格。 请考虑以下简单模式: 为此,wsimport工具将生成Java
我使用Angular 4应用程序与Asp核心web api,我测试了不同的端口在locahost上。我的WebApi需要Windows身份验证(需要获得登录用户名)。所有的电话都使用GET工作,但不幸的是,我无法得到POST工作。我为CORS设置了WebApi: angular 4客户端正试图发布文件
我用的是protobuf-net。Grpc并试图从. NET Framework (4.7.2)进行调用。)gRPC客户端。完整的例子在这里:https://github.com/angelagyang/GRPCProtobufExample 下面是我的客户的一个片段: 使用此配置,我在调用服务器时得到错误。如果我在服务器上设置,我就能够连接到服务器。但是,我希望服务器需要客户端证书并通过指纹验证
null null 消息客户端-REST资源: 消息客户端-MessageClient: 保存消息的message server引导类具有与客户端相同的注释。 null null
我正在考虑使用Ignite和。NET客户机进行一个项目。 我很好奇客户机是否支持。NET核心,因此可以在。NET核心应用程序中使用。 如果没有,未来是否计划了。NET核心支持?