2012-05-14 24 views
7

Rabbitmq için yeniyim, ancak bazı (bilinmeyen) nedenlerle "merhaba dünya" programı benim için çalışmıyor. send.py ve receive.py basitçe öğretici sayfasından kopyalanıp yapıştırılan gibidir:"Merhaba Dünya" rabbitmq için çalışmaz

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

RabbitMQ 2.6 olan bir RHEL 6. Python sürümüne "yum" kullanarak yüklü olduğu. Ben

$ service rabbitmq-server start 

ve "BAŞARIYI" yazdırır kullanarak sunucuyu başladı.

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

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

Sonra asla baskılar "Hello World!": Send.py ve receive.py çalıştırarak hiçbir hata veya uyarı mesajları vardır

.

bunun nesi var?

+0

nefret, ama bu gönderme her iki kontrol etmek ve kuyrukta için kuyruk isimleri ve ayarlarının aynı olup olmadığını, aynı sunucuya bağlanıyorsanız kodu almak: Bu kodu kullanabilirsiniz. Bu durumda yönetim eklentisini etkinleştirmeyi ve kuyruğu tarayıcıdan görüntülemeyi deneyebilirsiniz. Sıranın oluşturulduğunu göreceksiniz ve sonra düzgün çalışıyorsa sıradaki iletilerin olduğunu göreceksiniz. – robthewolf

+0

Bu kod bir VM'de çalışıyordu. VM'nin benim için bir kara kutu gibi göründüğünden emin değilim. Ama başka bir makinede test ettim (gerçek, sanal değil) ve işe yarıyor! "Merhaba dünya" kodunun bir VM'de çalışmasının olası nedeninin ne olabileceğini bilen var mı? – fanchyna

+0

Kod ve MQ hepsi VM'de çalışıyor muydu? – robthewolf

cevap

12

İlk Sonra tarayıcıyı açmak yönetim konsolu

sudo rabbitmq-plugins enable rabbitmq_management 

etkinleştirmek

http://localhost:55672 

ile Giriş: Sayacın (2 Giga altında) idi Benim durumumda

misafir/Konuk ve "Bu düğüm için disk boş alan alarmı gitti. Bu mesaj, boş alan miktarı sınırı aşana kadar gelen ağ trafiğini engelleyecektir." olarak

Düzenleme dosya /etc/rabbitmq/rabbitmq.config aşağıdaki gibidir: Sen Rabbit MQ Serever başlamak zorunda

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

Teşekkürler!sudo rabbitmqctl durumunu çalıştırarak aldığım bu: {disk_free_limit, 8335626240}, {disk_free, 3692666880}, ve gerçekten de boş disk (RabbitMQ 8.3 GB istiyor ama sadece 3.6 GB vardı) bulunuyor. Disk boş sınırını nasıl değiştiririm? –

+0

, düzenleme için – danidacar

+0

+1 cevabını güncelledi, bu çok yardımcı oldu. İlk başta, yanlış yazılmış JSON olduğunu düşünmüştüm, ama ortaya çıktığı gibi, değil, ve sondaki virgül ve nokta gerekiyor. Teşekkürler. – npclaudiu

0

:

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

Şimdi tavşan hizmetini yeniden başlatın. Windows dosya adı: RabbitMQ Service - start. Burada bariz devlet

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 
İlgili konular