簡體   English   中英

在rails中使用sidekiq,我如何向一群用戶發送消息,每個用戶都有自己想要接收消息的獨特時間?

[英]Using sidekiq in rails, how can I send messages to a bunch of users, each of which has a unique time they want to receive it?

嘿,我有一個Rails應用程序和一堆用戶,我想每天在用戶選擇的首選本地時間向他們發送一條消息。 (消息是文本,電子郵件或聊天機器人通知。)

我相信我可以在用戶模型中添加一些內容,以允許在首選時間每24小時執行一次操作,但是我不確定具體如何實現,而且我也不知道如何從例如,如果用戶更改了他們的首選時間,或者他們想一起禁用消息,則會排隊。

關於如何執行此操作的任何想法?

您的應用程序托管在哪里? 您可以有一個cron任務或一個每小時(或每10分鍾)運行的調度程序(Heroku)。 它將在用戶首選項表中查詢,以搜索此時(或此刻附近的范圍內,例如接下來的10分鍾)想要接收電子郵件的用戶。

time = Time.now
@users = User.include(:settings).where(“settings.receive_email_at between ? and ?”, time, time + 10.minutes)

您可能需要進行一些更改以處理時區並避免發送重復的電子郵件,但這只是一個主意。

這很簡單。 構建兩個模型-一個模型用於存儲用戶及其時間映射( UserTimeMapping ),第二個模型用於在每天向用戶發送消息( UserMessage )時創建唯一的條目。

編寫一個cron任務,該任務每10分鍾運行一次,並從UserTimeMapping提取所有要在接下來的10分鍾執行的記錄,並為確切時間安排一個worker任務(例如MessageTriggerWorker )。 工作者必​​須在UserMessage表中檢查今天是否存在給定user_id的記錄,如果是,則必須返回該記錄而不執行任何任務。 如果不是這種情況,那么它應該發送消息並在UserMessage表中創建一條記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM