1、asp.net core signalr中的Hub有没有类似于MVC的异常过滤器捕捉异常?
2、想使用signalr要写一个聊天软件,但是我不想每个用户发信息都进行数据库插入,这样对数据库压力太大,有没有什么思路?比如用户信息数量到达一定量再批量插入数据库
谢谢各位了!
Message Queue
能说下具体思路吗?消息队列想过,没有想到好的方案。谢谢
@四月的凉风:
絲路就跟你的需求一樣阿,聊天訊息都先進入Queue,每隔一段固定時間或是固定量再一次寫入DB
這樣DB 壓力就小了
@RosonJ: 但是存在一个问题。假如我把聊天信息存入Queue,那么存入Queue的数据属于孤岛数据。存入DB前无法获取到。
@四月的凉风:
是的,所以適用Queue的資料不能是立即性的,如交易或金錢相關
我的認知,對話紀錄應該不會有立即的查詢需求吧,畢竟客戶端都有一定的留存時間
@RosonJ: 嗯 我觉得可以
信息发送
首先 用户本地缓存聊天记录
再发送到服务端转发到Queue,然后Queue每到一定的量进行插入到DB。
这样Queue的数据可以在用户本地缓存拿到,如果用户清除本地缓存就发出请求将Queue的数据全插到DB。
@四月的凉风:
構想是可以,但存入DB由客戶端清緩存觸發,這點有待商榷
@RosonJ: 我是这样想的。因为如果用户清除本地缓存,就等于用户本地所有的聊天记录给删除了,那么就需要把该用户在Queue的信息都插入到DB中。只是针对当前清除本地缓存的用户。并不是所有的。
@四月的凉风:
用戶如果久就才清一次緩存,你的Queue豈不要塞爆了
建議Queue定時定量寫入DB就好
@RosonJ: 对
哇,这周的园豆被你超过了.....
@会长:
慚愧,前面一個什麼忙都沒幫上就拿了80個
消息可以存在redis缓存里面,定期落地到数据库舍
你还是先写好一点,能写得出来再说。