cq_fuqq 2017-05-15 09:53 采纳率: 100%
浏览 1209

haproxy rabbitMQ 问题

环境声明:
已经安装好haproxy
已经搭建好rabbitMQ集群
win7平台

haproxy配置文件如下:

 global
 log 127.0.0.1 local0 info
 maxconn 4096
 stats socket /tmp/haproxy.socket uid haproxy mode 770 level admin
 daemon
 #pidfile /var/run/haproxy.pid
defaults
 log global
 mode http
 retries 2
 option tcplog
 option dontlognull
# option redispatch
# option abortonclose
 maxconn 2000
 timeout connect 5s
 timeout client 120s
 timeout server 120s
listen rabbitmq_cluster
 bind 0.0.0.0:5670
 mode http
 balance roundrobin
 server rabbit 127.0.0.1:5672 check inter 5000 rise 2 fall 3
 server rabbit_1 127.0.0.1:5673 check inter 5000 rise 2 fall 3
 server rabbit_2 127.0.0.1:5674 check inter 5000 rise 2 fall 3
listen private_monitoring :8100
 mode http
 option httplog
 stats enable
 stats uri /haproxy/admin
 stats auth admin:admin
 stats refresh 10s

尚敏的而配置中已经将haproxy面向前端访问的端口设置成了5670
我在本地(win7)通过telnet检测过远程haproxy的5670端口,是通的
但是,我用java客户端链接haproxy负载时,始终报连接超时
代码如下:

 package com.rabbitmq.cluster_test;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.rabbitmq.client.ShutdownSignalException;

public class Consumer extends Thread {

    private static final String EXCHANGE_NAME = "exchange_name";
    private static final String ROUTING_KEY = "routing_key";
    private static final String QUEUE_NAME = "queue_name";
    private static Connection conn = null;

    static{
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.95.131");
        factory.setPort(5670);
        factory.setUsername("guest");
        factory.setPassword("guest");
        factory.setVirtualHost("/");

        try {
            conn = factory.newConnection();
        } catch (IOException | TimeoutException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void run() {
        try {
            Channel channel = conn.createChannel();
//          channel.exchangeDeclare(EXCHANGE_NAME, "topic");
            channel.queueDeclare(QUEUE_NAME, false, true, true, null);
            channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, ROUTING_KEY);

            QueueingConsumer consumer = new QueueingConsumer(channel);
            channel.basicConsume(QUEUE_NAME, false, consumer);

            while(true){
                try {
                    Delivery delivery = consumer.nextDelivery();
                    String msg = new String(delivery.getBody());
                    System.out.println("msg = "+msg);

                    Long tag = delivery.getEnvelope().getDeliveryTag();
                    channel.basicAck(tag, false);
                } catch (ShutdownSignalException | ConsumerCancelledException | InterruptedException e) {
                    e.printStackTrace();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

报错为:

 java.util.concurrent.TimeoutException
    at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:76)
    at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(BlockingCell.java:110)
    at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36)
    at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:366)
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:292)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:824)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:778)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:868)
    at com.rabbitmq.cluster_test.Consumer.<clinit>(Consumer.java:30)
    at com.rabbitmq.cluster_test.MainTest.main(MainTest.java:9)
Exception in thread "Thread-0" java.lang.NullPointerException
    at com.rabbitmq.cluster_test.Consumer.run(Consumer.java:39)
java.io.IOException
    at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:105)
    at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:101)
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:349)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:824)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:778)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:868)
    at com.rabbitmq.cluster_test.Publisher.<clinit>(Publisher.java:25)
    at com.rabbitmq.cluster_test.MainTest.main(MainTest.java:18)
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error
    at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66)
    at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36)
    at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:366)
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:292)
    ... 5 more
Caused by: java.io.EOFException
    at java.io.DataInputStream.readFully(DataInputStream.java:197)
    at java.io.DataInputStream.readFully(DataInputStream.java:169)
    at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:116)
    at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:138)
    at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:541)
    at java.lang.Thread.run(Thread.java:745)
Exception in thread "Thread-1" java.lang.NullPointerException
    at com.rabbitmq.cluster_test.Publisher.run(Publisher.java:34)
==over==
总共耗时:9.596秒
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 C++使用Gunplot
    • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
    • ¥15 matlab数字图像处理频率域滤波
    • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
    • ¥15 ELGamal和paillier计算效率谁快?
    • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
    • ¥15 Arcgis相交分析无法绘制一个或多个图形
    • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
    • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
    • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)