java - 在 vert.x 上使用事件总线注册编解码器

标签 java vert.x

vert.x 事件总线的消息编解码器示例。

我有一个用例,我想注册我的自定义对象以将其发送到事件总线上。为此,我必须实现消息编解码器类。我想知道是否可以在与事件总线同名?如果不是,将多个自定义对象注册为编解码器的正确方法是什么。

最佳答案

如果您不使用集群EventBus,那么您可以像这样实现每个编解码器:

class IdentityCodec implements MessageCodec {
    private final Class aClass;

    public IdentityCodec(Class aClass) {
        this.aClass = aClass;
    }

    @Override
    public void encodeToWire(Buffer buffer, Object o) {

    }

    @Override
    public Object decodeFromWire(int pos, Buffer buffer) {
        return null;
    }

    @Override
    public Object transform(Object o) {
        return o;
    }

    @Override
    public String name() {
        return aClass.getName() + "Codec";
    }

    @Override
    public byte systemCodecID() {
        return -1;
    }
}

这里重要的部分是每个编解码器都必须有一个唯一的名称,因此我根据类名生成它。

然后将其注册为默认编解码器:

    vertx.eventBus().registerDefaultCodec(A.class, new IdentityCodec(A.class));
    vertx.eventBus().registerDefaultCodec(B.class, new IdentityCodec(B.class));

可能有更好的方法来泛化它,但如果没有看到你的代码,就无法判断。

关于java - 在 vert.x 上使用事件总线注册编解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59775459/

相关文章:

java.lang.UnsupportedClassVersionError : io/vertx/core/Starter Error 错误

java - 在 Vertx 和 Java 中使用 CRL 处理证书吊销

java - 为什么 ArrayList 在内部使用 Object[](而不是 E[])?

java - 使用 Intent 将 TikTok 应用打开至其主页

java - 线程异常 "main"java.lang.UnsatisfiedLinkError :ro. i2c.mirela.board.i2cJNI.U2C_OpenDevice(J)J

java - 删除 Java 命令行界面的 args[] 中连续的第 0 个条目?

java - 在 HIVE 中运行 UDF 以进行自定义反序列化时出现 OWN_TASK_FAILURE。

postgresql - 顶点更新结果-> postgresql插入语句中的键为空

java - vertx-x3 集群多个顶点

java - 如何使我的Keystore文件与Java Vert.x项目一起使用(无效的Keystore格式)