如何解决使用旧的 cinnamon-agent.jar 时,信封没有被路由到 akka 集群分片actor
我实际上是在发布一个体验。也许我会节省一些人的时间。
总结:
有时 Akka 集群分片 Actor 不会收到任何路由消息,原因是使用了旧的 cinnamon 代理(我不知道怎么做,但我有证据)。
详情:
我有一个 Akka Java 项目。我们已将 cinnamon-agent.jar(几个月前)推送到代码库,您可以在使用标准 JVM 选项运行应用程序时指向它:
-javaagent:.local/cinnamon-agent.jar
几天前,我尝试使用上述选项激活 Lightbend Telemetry。突然我意识到akka集群分片的路由机制不再起作用了。目标 actor 甚至 ShardRegion.MessageExtractor
实现都没有被执行,即使在 DEBUG 级别,消息也会以某种方式丢失而没有任何日志。
我花了2天的时间才发现它与肉桂剂有关!但令人惊讶的是,通过使用新的 jar 文件(由构建插件获取)更改 jar 文件,问题得到了解决。
解决方法
使用构建工具插件获取新的 cinnamon-agent.jar:
马文:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>copy</id>
<phase>compile</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.lightbend.cinnamon</groupId>
<artifactId>cinnamon-agent</artifactId>
<version>2.15.0</version>
<overWrite>true</overWrite>
<destFileName>cinnamon-agent.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
Gradle:
// Add the agent to a separate configuration so it doesn't add to the normal class path
configurations {
agent
}
dependencies {
agent group: 'com.lightbend.cinnamon',name: 'cinnamon-agent',version: '2.15.0'
}
更多信息:
将代理作为 javaagent
VM 选项添加到您的运行中:
java -jar -javaagent:.local/cinnamon-agent.jar your-app.jar
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。