Java Akka websphere pub sub

Java Akka websphere pub sub,java,akka,cluster-computing,netty,publish-subscribe,Java,Akka,Cluster Computing,Netty,Publish Subscribe,我有一个在websphere下运行的应用程序的两面 一个是处理数据并通过mq提交 一个通过mq消息驱动bean接收数据 两侧连接成一组 first.log:INFO 16:02:33.174 [ClusterPacing-akka.actor.default-dispatcher-4] Cluster(akka://ClusterPacing) - Cluster Node [akka.tcp://ClusterPacing@serverone:2531] - Leader is moving

我有一个在websphere下运行的应用程序的两面

一个是处理数据并通过mq提交 一个通过mq消息驱动bean接收数据 两侧连接成一组

first.log:INFO  16:02:33.174 [ClusterPacing-akka.actor.default-dispatcher-4] Cluster(akka://ClusterPacing) - Cluster Node [akka.tcp://ClusterPacing@serverone:2531] - Leader is moving node [akka.tcp://ClusterPacing@serverone:2531] to [Up]
first.log:INFO  16:02:38.123 [ClusterPacing-akka.actor.default-dispatcher-2] Cluster(akka://ClusterPacing) - Cluster Node [akka.tcp://ClusterPacing@serverone:2531] - Leader is moving node [akka.tcp://ClusterPacing@serverone:2532] to [Up]
我为主题“ReportStatus”创建了主题订阅服务器

public void onReceive(Object message) {

    log.info("Received message: " + message);

    if (message instanceof SubscribeAck)
        log.info("Subscribed to: " + ((SubscribeAck) message).subscribe().topic());
    else if (message instanceof Report) {
        BatchedItemExecutionReport report = (Report) message;
        log.info("Received report: " + report + " from "
                + getSender());
    } else {
        unhandled(message);
    }
}
从日志文件first.log中可以看到,已成功

INFO  16:02:31.665 [server.startup : 2] sample.app.App - created BatchPacer: Actor[akka://ClusterPacing/user/BatchPacer#-1219521740]
INFO  16:02:31.665 [ClusterPacing-akka.actor.default-dispatcher-4] listeners.pacing.BatchPacer - Subscribing to: ReportStatus
INFO  16:02:31.720 [ClusterPacing-akka.actor.default-dispatcher-4] listeners.pacing.BatchPacer - Received message:     SubscribeAck(Subscribe(omsReportStatus,None,Actor[akka://ClusterPacing/user/BatchPacer#-1219521740]))
INFO  16:02:31.721 [ClusterPacing-akka.actor.default-dispatcher-4] listeners.pacing.BatchPacer - Subscribed to: ReportStatus
还有出版商

public class ReportPublisher extends UntypedActor {
private static final Logger log = LoggerFactory.getLogger(ReportPublisher.class);

private ActorRef mediator = null;

private ActorSystem actorSystem = null;

int jobCounter = 0;

public ReportPublisher (ActorSystem actorSystem) {
    this.actorSystem = actorSystem;
    mediator = DistributedPubSubExtension.get(actorSystem).mediator();
}

public static Props props(final ActorSystem actorSystem) {
    return Props.create(new Creator<ReportPublisher >() {
        private static final long serialVersionUID = 1L;

        @Override
        public ReportPublisher create() throws Exception {
            return new ReportPublisher(actorSystem);
        }
    });
}

@Override
public void onReceive(Object message) {
    log.info("message: " + message);
    if (message instanceof Report) {
        Report report = (Report) message;
        log.info("got: " + report);
        publish(report);
    } else {
        unhandled(message);
    }
}

void publish(Report report) {
    log.info("Sending: " + report);
    mediator.tell(new DistributedPubSubMediator.Publish(
            REPORT_STATUS_TOPIC, report), getSelf());
    log.info("Sent.");
}
}
消息被发送,如second.log中所示

INFO  16:03:34.896 [ClusterPacing-akka.actor.default-dispatcher-4] oms.app.ReportPublisher - message: Report[Exception:null, ReportError:null, GatewayError:null, , id:15042002200380001]
INFO  16:03:34.896 [ClusterPacing-akka.actor.default-dispatcher-4] oms.app.ReportPublisher - got: Report[Exception:null, ReportError:null, GatewayError:null, , id:15042002200380001]
INFO  16:03:34.897 [ClusterPacing-akka.actor.default-dispatcher-4] oms.app.ReportPublisher - Sending: Report[Exception:null, ReportError:null, GatewayError:null, , id:15042002200380001]
INFO  16:03:34.897 [ClusterPacing-akka.actor.default-dispatcher-4] oms.app.ReportPublisher - Sent.
只是主题订阅者上从未收到过

配置文件如下所示

akka {

    loglevel = "DEBUG"
    actor.debug.unhandled = on

    extensions = ["akka.contrib.pattern.DistributedPubSubExtension"]

    actor {
                    provider = "akka.cluster.ClusterActorRefProvider"
    }

    remote {
            enabled-transports = ["akka.remote.netty.tcp"]
            netty.tcp {
                    hostname = serverone
                    port = 0
            }
    }

    cluster {
        seed-nodes= [
                    "akka.tcp://ClusterPacing@serverone:2531",
                    "akka.tcp://ClusterPacing@serverone:2532"
            ]
    }
}
同样,这段代码在websphere中作为两个单独的应用程序运行,它们现在加入了相同的本地集群

我最初编写了一个独立的java应用程序,只是为了确保代码正常工作,而且。。。它可以工作,但不能在Websphere中工作

我做错了什么


谢谢

我向actors publisher和subscriber订阅了集群事件,并且只有在它们[启动]初始化中介并订阅之后。还是没有用。订阅服务器未接收到消息:|我向actors publisher和subscriber订阅了集群事件,并且只有在它们初始化中介并订阅之后。还是没有用。订阅者未接收到消息:心跳消息在集群中的节点之间持续交换。心跳到[阿克卡]。tcp://ClusterPacing@serverone:2531]来自[akka]的心跳响应。tcp://ClusterPacing@serverone:2531]akka 2.3.9 scala 2.11.5
akka {

    loglevel = "DEBUG"
    actor.debug.unhandled = on

    extensions = ["akka.contrib.pattern.DistributedPubSubExtension"]

    actor {
                    provider = "akka.cluster.ClusterActorRefProvider"
    }

    remote {
            enabled-transports = ["akka.remote.netty.tcp"]
            netty.tcp {
                    hostname = serverone
                    port = 0
            }
    }

    cluster {
        seed-nodes= [
                    "akka.tcp://ClusterPacing@serverone:2531",
                    "akka.tcp://ClusterPacing@serverone:2532"
            ]
    }
}