トポロジを構築してオブジェクトのセットとして構成し、そのオブジェクトのコレクション(jarファイルとともに)をNimbusサーバーに送信するクラスを実行して、ストームアプリケーションを起動します。これらのオブジェクトのいくつかは、スパウトとボルトのインスタンスであり、トポロジの提出の一部としてシリアル化されます。クラスタ上のボルトとスパウトの各インスタンスは、これらの逆シリアル化されたオブジェクトの1つです。したがって、トポロジを最初に起動すると(通常はエッジノード上で)、クラスタ上ではなくすべてのボルトとスパウトが構築されます。
これは、クラスの初期化とオブジェクトの構築時にスパウトによって参照されるオブジェクトがすべて、spoutインスタンスとともにシリアル化されることを意味します。これにはBlockingQueueが含まれます。あなたのBlockingQueueはシリアル化され、クラスタに配布されており、旅行中に生き残っていないように思えます。
あなたがしたいことは、ブロックキューの変数をコンストラクタでnullのままにして、open()メソッドで変数を設定することです。実際のキューオブジェクトを作成するときには、spoutのopen()メソッドで使用できるように、パブリック静的変数に格納することができます。