모든 사이드 키 큐를 중복 제거 할 수 있습니다. 즉, 대기열의 각 작업에 고유 한 작업자 및 인수가 있는지 확인하십시오. 사이드 키 대기열 제거
(예를 들어, 객체마다 새로운 작업을 트리거 두 번 저장되어 있기 때문이 발생;.하지만 우리는 단지 그것을 처리 할 그래서 주기적으로 해제 속는 큐를 찾고 있어요.)
0
A
답변
1
sidekiq unique jobs 보석을 사용할 수 있습니다. 실제로 필요한 것처럼 보입니다.
나중에 추가 :
여기에 당신이 무엇을 요구의 기본 구현 - 그것은 빠르지 않을 것이지만, 작은 큐에 대한 확인을해야한다. 또한 JSON을 재 포장 할 때 this 문제를 만났습니다. 제 환경에서 json을 동일한 방식으로 다시 인코딩해야했습니다.
#for proper json packing (I had an issue with it while testing)
require 'bigdecimal'
class BigDecimal
def as_json(options = nil) #:nodoc:
if finite?
self
else
NilClass::AS_JSON
end
end
end
Sidekiq.redis do |connection|
# getting items from redis
items_count = connection.llen('queue:background')
items = connection.lrange('queue:background', 0, 100)
# remove retrieved items
connection.lrem('queue:background', 0, 100)
# jobs are in json - decode them
items_decoded = items.map{|item| ActiveSupport::JSON.decode(item)}
# group them by class and arguments
grouped = items_decoded.group_by{|item| [item['class'], item['args']]}
# get second and so forth from each group
duplicated = grouped.values.delete_if{|mini_list| mini_list.length < 2}
for_deletion = duplicated.map{|a| a[0...-1]}.flatten
for_deletion_packed = for_deletion.map{|item| JSON.generate(item)}
# removing duplicates one by one
for_deletion_packed.each do |packed_item|
connection.lrem('queue:background', 0, packed_item)
end
end
0
비슷한 질문에 대한 답변을 확인하십시오.
에만 두 번 같은 작업을 실행하고 시간을 기반으로 피한다 그건관련 문제
- 1. 대기열 및 대기열 제거 방법의 대기열 계수는?
- 2. C에서 다중 스레드 대기열 제거
- 3. 대기열 중간에서 항목을 제거 하시겠습니까?
- 4. 작업자 스레드가있는 항목 대기열 제거
- 5. Bigcartel - 사이드 바 헤더 제거
- 6. 레일 사이드 키 백그라운드 프로세스
- 7. 제거 중에 레지스트리 키 제거
- 8. 값별로 대기열 요소를 제거 할 수 있습니까?
- 9. ASP.Net 마법사 컨트롤에서 사이드 바 제거
- 10. 내 앱 아이콘이 사이드 바에서 제거
- 11. 실수로 선택한 사이드 바에서 제거 xml 미리보기
- 12. Outlook AddIn 사이드 바 헤더 제거
- 13. 상점/전면 페이지에만있는 woocommerce 사이드 바 제거
- 14. 사이드 바를 유지하면서 스크롤 JavaScript를 제거 하시겠습니까?
- 15. 패널에서 키 리스너 제거
- 16. Groovy지도에서 주어진 키 제거
- 17. 외래 키 제거
- 18. 키 누름 지연 제거
- 19. C++ 맵에서 키 제거
- 20. 사전의 특정 키 제거
- 21. 외국인 - 외래 키 제거
- 22. 자바 키 우선 순위 대기열 감소 키 조작
- 23. Windows 스토어 앱 사이드 로딩 제품 키
- 24. 레일 사이드 키 큐 크기가 작동하지 않습니다.
- 25. 사이드 키 큐 당 스레드 수 제한
- 26. 레일 사이드 키 패스 REXML :: Element
- 27. 대기중인 모델에 대한 사이드 키 쿼리
- 28. 대기열 대 준비 대기열
- 29. 트랜잭션 대기열/대기열 풀기
- 30. 레일 : 대기열 대기열
, 나는 속는을 제거하여 기존의 큐를 정리하기 위해 노력하고있어. – mahemoff
하지만 중복을 제거하지 않고 처음부터 복제본을 제거하려는 이유는 무엇입니까? 제공된 예제에서 - "객체는 두 번 저장되어 매번 새로운 작업을 트리거하지만, 단지 한 번만 처리되기를 원합니다". 다른 사건이있을 수 있습니까? –
콜백 트리거가 설정된 경우 동일한 작업이 여러 번 추가되는 것을 방지하기 어려울 수 있습니다. 또 다른 예는 일부 극단 URL이 변경되었음을 알리는 것입니다. 두 번 가져 오지 않으려는 경우입니다. – mahemoff