使用旧肉桂时,信封未路由到 akka 集群分片 actor-agent.jar
Envelop is not being routed to akka cluster sharded actor while using old cinnamon-agent.jar
我其实是在发经验。也许我会节省别人的时间。
总结:
有时 Akka 集群分片 Actor 不会收到任何路由消息,原因是使用了旧的肉桂代理(我不知道如何但我有证据)。
详情:
我有一个 Akka Java 项目。我们已经将 cinnamon-agent.jar(几个月前)推送到代码库,并且可以在 运行 应用程序使用标准 JVM 选项时指向它:
-javaagent:.local/cinnamon-agent.jar
几天前,我尝试使用上述选项激活 Lightbend Telemetry。突然发现akka cluster sharding的路由机制不行了。目标参与者甚至 ShardRegion.MessageExtractor
实现都没有被执行,即使在 DEBUG 级别,消息也会以某种方式丢失而没有任何日志。
我用了2天时间才知道和肉桂剂有关!但令人惊讶的是,通过用一个新文件(由构建插件获取)更改 jar 文件,问题得到了解决。
使用构建工具插件获取新的肉桂-agent.jar:
Maven:
<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
我其实是在发经验。也许我会节省别人的时间。
总结:
有时 Akka 集群分片 Actor 不会收到任何路由消息,原因是使用了旧的肉桂代理(我不知道如何但我有证据)。
详情:
我有一个 Akka Java 项目。我们已经将 cinnamon-agent.jar(几个月前)推送到代码库,并且可以在 运行 应用程序使用标准 JVM 选项时指向它:
-javaagent:.local/cinnamon-agent.jar
几天前,我尝试使用上述选项激活 Lightbend Telemetry。突然发现akka cluster sharding的路由机制不行了。目标参与者甚至 ShardRegion.MessageExtractor
实现都没有被执行,即使在 DEBUG 级别,消息也会以某种方式丢失而没有任何日志。
我用了2天时间才知道和肉桂剂有关!但令人惊讶的是,通过用一个新文件(由构建插件获取)更改 jar 文件,问题得到了解决。
使用构建工具插件获取新的肉桂-agent.jar:
Maven:
<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