示例#1
0
    def __init__(self, cfg):
        lbNodesInput = loadbalancers.CreateRouterFromConfig(None)
        lbNodesControl = loadbalancers.CreateRouterFromConfig(None)
        qInput = queue.CreateQueueFromConfig(
            cfg['balancer']['inputChannel']['queue'])
        qControl = queue.CreateQueueFromConfig(
            cfg['balancer']['controlChannel']['queue'])

        inputChannels = list()
        controlChannels = list()
        for node in cfg['balancer']['nodes']:
            inputChannels.append(
                OutBoundAmqpChannel(host=node['inputChannel']['url'],
                                    useAck=bool(
                                        node['inputChannel']['useAck'])))
            controlChannels.append(
                OutBoundAmqpChannel(host=node['controlChannel']['url'],
                                    useAck=bool(
                                        node['controlChannel']['useAck'])))

        self.nodesInputGateway = SenderGateway(
            lbNodesInput,
            qInput,
            channels=inputChannels,
            numExtractors=len(inputChannels))
        self.nodesInputGateway.connect()

        self.nodesControlGateway = SenderGateway(
            lbNodesControl,
            qControl,
            channels=controlChannels,
            numExtractors=len(controlChannels))
        self.nodesControlGateway.connect()

        self.receiverInputGateway = InBoundAmqpChannel(
            host=cfg['balancer']['inputChannel']['url'],
            useAck=bool(cfg['balancer']['inputChannel']['useAck']))

        self.receiverInputGateway.OnMessageReceived += self.InputMessageReceived
        self.receiverInputGateway.connect()

        self.receiverControlGateway = InBoundAmqpChannel(
            host=cfg['balancer']['controlChannel']['url'],
            useAck=bool(cfg['balancer']['controlChannel']['useAck']))
        self.receiverControlGateway.OnMessageReceived += self.ControlMessageReceived
        self.receiverControlGateway.connect()