2012-05-14 9 views
7

私はrabbitmqを初めて使用していますが、一部の(未知の)理由により、 "hello world"プログラムが動作しません。 send.pyとreceive.pyは、単にコピーして チュートリアルページから貼り付けされています"Hello World"はrabbitmqで動作しません

http://www.rabbitmq.com/tutorials/tutorial-one-python.html

のRabbitMQは、RHEL 6 Pythonのバージョンの「YUM」を使用してインストールされている2.6です。 私は

$ service rabbitmq-server start 

を使用してサーバーを開始し、それが "SUCCESS" を出力します。

$ python send.py 
[x] Sent 'Hello World!' 

$ python receive.py 
[*] Waiting for messages. To exit press CTRL+C 

そして、それは決してプリント "!Hello World" の:send.pyと receive.pyを実行して、エラーや警告メッセージはありません

どうしたのですか?

+0

明らかにここでは明示するが、送信と受信の両方のコードが同じサーバーに接続していること、キューのキュー名と設定が同じであることを確認することができます。このような場合は、管理プラグインを有効にして、ブラウザからキューを表示してみてください。キューが正しく作成されていれば、そのキューが作成され、キューにメッセージがあることがわかります。 – robthewolf

+0

このコードはVM上で実行されていました。 VMが私のためのブラックボックスのように見えるので、何が起きているのか分かりません。しかし、私は別のマシンでテストしました(実際ではなく、仮想ではありません)。 「hello world」コードがVM上で動作しない可能性がある理由は誰でも知ることができます。 – fanchyna

+0

コードとMQはすべてVM上で実行されていましたか? – robthewolf

答えて

12

まずブラウザを開き、管理コンソール

sudo rabbitmq-plugins enable rabbitmq_management 

を有効

http://localhost:55672 

でログイン:それはメモリが(2ギガ下)であった私の場合は

ゲスト/ゲストと「このノードのディスク空き容量アラームがオフになりました。空き容量が制限を超えるまで、着信ネットワークトラフィックをブロックします」というメッセージが表示されます。

編集したファイル/etc/rabbitmq/rabbitmq.config次のように:

[ 
    {rabbit, [{disk_free_limit, {mem_relative, 0.1}}]} 
] 

は今ウサギのサービスを再起動します。

service rabbitmq-server stop 
service rabbitmq-server start 
+0

ありがとう!sudo rabbitmqctlのステータスを実行することにより、私はこれだ: {disk_free_limit、8335626240}、 {disk_free、3692666880}、 をし、実際にそれがディスク空き(RabbitMQのは8.3ギガバイトを望んでいるが、私は唯一の3.6ギガバイトを持っていた)のです。 ディスクの空き容量を変更するにはどうすればよいですか? –

+0

は、 – danidacar

+0

+1を編集のために更新しました。最初はJSONのスペルが間違っていると思っていましたが、判明したとおり、コンマとドットが必要です。ありがとう。 – npclaudiu

0

あなたはRabbit MQ Sereverを開始する必要があります。 Windowsファイル名:RabbitMQ Service - start

import java.io.IOException; 
import java.util.ResourceBundle; 
import java.util.concurrent.TimeoutException; 
import com.rabbitmq.client.Channel; 
import com.rabbitmq.client.Connection; 
import com.rabbitmq.client.ConnectionFactory; 

public class NewTaskController implements Runnable { 
    private final String message; 

    private static final String EXCHANGE_NAME = "test"; 

    private static final String ROUTING_KEY = "test"; 

    public NewTaskController(final String message) { 
     this.message = message; 
    } 

    @Override 
    public void run() { 

     //getting data from application.properties 
     //for the rabbit_mq configuration 

     ResourceBundle mRB = ResourceBundle.getBundle("application"); 


     System.out.println("*****NewTaskController************"+mRB.getString("rabbitmq.port")); 
     String rabbitmq_username = mRB.getString("rabbitmq.username"); 
     String rabbitmq_password = mRB.getString("rabbitmq.password"); 
       String rabbitmq_hostname = mRB.getString("rabbitmq.hostname"); 
         int rabbitmq_port = Integer.parseInt(mRB.getString("rabbitmq.port")); 
    ConnectionFactory factory = new ConnectionFactory(); 
    factory.setUsername(rabbitmq_username); 
    factory.setPassword(rabbitmq_password); 
    factory.setHost(rabbitmq_hostname); 
    factory.setPort(rabbitmq_port); 
    Connection conn; 
    try { 
    conn = factory.newConnection(); 
    Channel channel = conn.createChannel(); 

    channel.exchangeDeclare(EXCHANGE_NAME, "direct", true); 
    String queueName = channel.queueDeclare().getQueue(); 
    System.out.println(queueName); 
    channel.queueBind(queueName, EXCHANGE_NAME, ROUTING_KEY); 
    System.out.println("Producing message: " + message + " in thread: " + Thread.currentThread().getName()); 
    channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY, null, message.getBytes()); 

    try { 
     channel.close(); 
    } catch (TimeoutException e) { 
     e.printStackTrace(); 
    } 
    conn.close(); 
    } catch (IOException | TimeoutException e) { 
    e.printStackTrace(); 
    } 
} 
} 

application.properties file 

rabbitmq.username=guest 
rabbitmq.password=guest 
rabbitmq.hostname=localhost 
rabbitmq.port=5672 
関連する問題