Ich habe Probleme beim Übergeben einiger Verbindungsinformationen an einen ausführbaren Thread (unter Verwendung von rabbitmq, aber ich denke nicht, dass dies spezifisch für rabbitmq ist und sich auf alles anwenden lässt). Mein Ziel ist es, ein paar Worker-Threads zu haben, die einige Arbeiten aus einer Warteschlange verarbeiten, aber ich möchte nicht, dass jedes Mal Verbindungen geöffnet und geschlossen werden.Wie kann ich Verbindungsinformationen an eine ausführbare Datei übergeben?
Der Code funktioniert ohne runnable (es ist eigentlich aus den rabbitmq Tutorials gestohlen), aber sobald ich ein lauffähiges implementieren eine Verbindung geben ich auf doWork diesen Fehler(): The method doWork(Channel, String) is undefined for the type Worker
Wenn ich entfernen Kanal von runnable und nicht Senden Sie es dann das Programm funktioniert gut, aber die Verbindungsinformationen werden nicht übergeben. Was kann ich tun?
Hier ist mein Code:
//this is the standard stuff to start a connection
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
channel.basicQos(1);
QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume("task_queue", false, consumer);
//end of standard stuff
while (true) {
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
System.out.println(" [x] Received '" + message + "'");
doWork(channel, message);
System.out.println(" [x] Done");
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
}
}
dann:
public class doWork implements Runnable{
protected Channel channel = null;
protected String message = null;
public doWork(Channel channel, String message) {
this.channel = channel;
this.message = message;
}
public void run() {
Benennen Sie Ihre Klassen in 'UpperCase', Methoden und Felder in' camelCase' und statische Endkonstanten in 'FULL_CAPS'. Beachten Sie auch, dass [Interfaces immer Adjektive und Klassen Substantive sind] (http://www.iwombat.com/standards/JavaStyleGuide.html#Class%20and%20Interface%20Names). – adarshr