実行可能なスレッドに接続情報を渡す際に問題が発生しています(rabbitmqを使用していますが、これはrabbitmqに固有のものではないと思われます)。私の目標は、キューから作業を処理するワーカースレッドをいくつか持つことですが、毎回接続を開いたり閉じたりするオーバーヘッドは欲しません。接続情報を実行可能ファイルに渡すにはどうすればよいですか?
コードは、私がdoWork()でこのエラーを取得し、接続を渡して実行可能を実装するとすぐに(その実際のRabbitMQのチュートリアルから盗まれた)が、実行可能せずに動作します: The method doWork(Channel, String) is undefined for the type Worker
私は実行可能からチャンネルを削除しない場合それを送信するとプログラムは正常に動作しますが、接続情報は渡されません。私に何ができる?ここで
は私のコードです:
その後、 //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);
}
}
:
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() {
'UpperCase'、' camelCase'のメソッドとフィールド、 'FULL_CAPS'の静的最終定数にクラス名を付けてください。また、[インターフェイスは常に形容詞であり、クラスは名詞です](http://www.iwombat.com/standards/JavaStyleGuide.html#Class%20and%20Interface%20Names)。 – adarshr