2015-11-01 17 views
6

Chúng tôi có cấu trúc liên kết bão, trong đó chúng tôi đã định cấu hình một vòi và hai bu lông. Spout truy vấn dữ liệu từ DB liên tục và gửi tuples nó đến bu lông đầu tiên cho một số xử lý. Bulông đầu tiên thực hiện một số xử lý và gửi các bộ xử lý tới bu lông thứ hai gọi dịch vụ web của bên thứ ba và gửi dữ liệu. Vì vậy, những gì đang xảy ra sau một thời gian, bu lông cuối cùng không nhận được bất kỳ bộ dữ liệu nào và nếu chúng ta khởi động lại cấu trúc liên kết thì nó hoạt động tốt. Chỉ bu-lông cuối cùng là vấn đề ở đây. Vòi khác và bu lông đầu tiên đang chạy tốt, và tôi không sử dụng khuôn khổ acking. Tôi đã cấu hình chỉ một công nhân trong trường hợp này`.Tác vụ của Apache Storm Bolt không nhận được thông báo sau một thời gian

TopologyBuilder builder = new TopologyBuilder(); 
    builder.setSpout("messageListenrSpout", new MessageListenerSpout(), 1); 
    builder.setBolt("processorBolt", new ProcessorBolt(), 20).shuffleGrouping("messageListenrSpout"); 
    builder.setBolt("notifierBolt", new NotifierBolt(),40).shuffleGrouping("processorBolt"); 
    Config conf = new Config(); 
     conf.put(Config.TOPOLOGY_SLEEP_SPOUT_WAIT_STRATEGY_TIME_MS, 10000); 
     //conf.setMessageTimeoutSecs(600); 
     conf.setDebug(true); 
     StormSubmitter.submitTopology(TOPOLOGY, conf, builder.createTopology()); 

Trả lời

2

Rất có thể bạn đang gặp sự cố với việc tồn đọng các bộ dữ liệu gây ra thời gian chờ. Hãy thử tăng gợi ý song song cho bu lông thứ 2 vì có vẻ như thời gian xử lý của nó dài hơn nhiều so với bu lông đầu tiên (đó là lý do tại sao sẽ có một backlog vào bu lông thứ 2). Nếu bạn đang chạy cấu trúc liên kết này trên cụm, hãy xem giao diện người dùng Storm để xem chi tiết cụ thể.

+0

Xin chào Chris, tôi không sử dụng khung công tác acking. Liệu cơn bão vẫn còn thời gian chờ tin nhắn? Nếu thông báo đang hết thời gian chờ, chúng tôi có thể kiểm tra nhật ký. Và tôi đã đưa ra gợi ý song song với 30 của bu-lông cuối cùng. –

1

Khi tôi đang gỡ lỗi cấu trúc liên kết của mình, tôi nhận thấy rằng nếu chúng ta nói rằng vòi đang gửi tin nhắn nhanh nhưng bu-lông đang xử lý chậm. Trong trường hợp này, tin nhắn sẽ được xếp hàng đợi trong LMAX Disruptor Queue. Sau đó, nhiệm vụ spout chờ cho rằng để được sản phẩm nào. Nếu bạn lấy thread dump, bạn sẽ tìm thấy các chủ đề đang ở trạng thái TIMED_WAITING. Vì vậy, chúng ta cần cấu hình cấu trúc liên kết theo cách mà luồng và dòng chảy của nó được duy trì.

Các vấn đề liên quan