SlideShare a Scribd company logo
1 of 6
Download to read offline
Lập trình background job bằng
Azure Queue và WebJob trên
Azure Storage Emulator
Nhu cầu: developer tham gia dự án sử dụng Azure mong muốn lập trình và
chạy queue, webjob dưới localhost mà không cần phải đăng ký sử dụng azure
Giải pháp: sử dụng Azure storage emulator
Chung Vĩnh Khang
chungvinhkhang@live.com
Emulator
Web
server
Queue Job
request enqueue
message
trigger
- dequeue
Chuẩn bị:
VS2013+
Azure SDK 2.9+ https://azure.microsoft.com/en-us/downloads/
Demo
• Tạo 1 solution bao gồm:
 1 web app (asp.net)
 1 web job
• Start emulator
• Cấu hình config: connection là “UseDevelopmentStorage=true;”
Lập trình phần web push message xuống queue
• Giả sử tên queue là myqueue (azure queue không cho viết hoa)
• Implement 1 button, khi người dùng submit POST thì web thì push
xuống queue 1 message từ input. Mình làm bằng webpage cho đơn
giản, mọi người có thể áp dụng qua mvc, web api, signalr,…
• Install azure storage library (7+):
Install-Package WindowsAzure.Storage
• Test trên web. Kết quả có thể kiểm tra bằng cách vào Cloud Explorer
Lập trình phần job trigger khi queue có message
• Mặc định khi tạo project webjob thì
Microsoft.Azure.WebJobs 1.0.1.0 sẽ được add vào. Và
trước giờ thư viện này không support trigger từ
blob/queue dưới emulator vì 1 số lí do kĩ thuật. Tuy nhiên
mới đây team azurewebjob sdk đã giải quyết. Và hiện tại
chưa chính thức:
• Muốn add thư viện đó, ta cần add them package source
vào nugget. Rồi install thư viện webjobs 2.0.0 alpha
• Có thể test bằng cách ghi ra console:
Kết quả
public static void ProcessQueueMessage([QueueTrigger("myqueue")] string message, TextWriter log
) {
Console.WriteLine(message);
}
Bây giờ có thể mở web và console lên test cùng 1 lúc
• Tips: để trigger nhanh hơn thì có thể set thời gian trong cấu hình JobHost:
• Best Practice thực tế:
 Không pass cả object lớn vào queue mà lưu xuống memory cache như redis hay db, chỉ pass id hoặc guid xuống queue. Job khi trigger sẽ query
object theo id đó.
 Phải kiểm tra webconfig xem có phải connection đang trỏ đến queue emulator hay development queue chưa mới test. Tránh để tình trạng 1
queue mà 2 job giống nhau subscribe và xử lý. Nguy hiểm nhất là subscribe vào cái production queue
• 1 số ứng dụng thực tế:
Bulk mail, mass notification, đồng bộ, backup/archive, etl, media processing, webhook, report, purge, batch import
• 1 số công nghệ kết hợp / thay thế:
Queue/Messaging: Amqp (rabbitmq, rocketmq, cloudamqp), azure service bus, msmq
Job: Quartz .NET, windows background service, azure worker role
Cache: Redis, memcache, ncache, azureblob, appfabric
Lib: Nservicebus, hangfire, servicestack
-HẾT-

More Related Content

Similar to Lập trình background job bằng azurequeue và webjob sử dụng azure storage emulator

Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSX
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSXHướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSX
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSXTechMaster Vietnam
 
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015IT Expert Club
 
Lập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biếnLập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biếnSon Nguyen
 
Devexpress cho asp.net
Devexpress cho asp.netDevexpress cho asp.net
Devexpress cho asp.netthichxoidau
 
Introduce docker
Introduce dockerIntroduce docker
Introduce dockerRobin Huy
 
Trần Anh Khoa - Kautilya và Powershell trong kỹ thuật tấn công tiếp cận
Trần Anh Khoa - Kautilya và Powershelltrong kỹ thuật tấn công tiếp cậnTrần Anh Khoa - Kautilya và Powershelltrong kỹ thuật tấn công tiếp cận
Trần Anh Khoa - Kautilya và Powershell trong kỹ thuật tấn công tiếp cậnSecurity Bootcamp
 
Giới thiệu ASP.NET Core 2.0
Giới thiệu ASP.NET Core 2.0Giới thiệu ASP.NET Core 2.0
Giới thiệu ASP.NET Core 2.0Huân Bùi Đình
 
Kinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnKinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnDotnet Open Group
 
giới thiệu về Asp.net core 2.0
giới thiệu về Asp.net core  2.0giới thiệu về Asp.net core  2.0
giới thiệu về Asp.net core 2.0VanSy9x
 
[Athena] Nguyễn Nhật Nguyên - Báo cáo thực tập
[Athena] Nguyễn Nhật Nguyên - Báo cáo thực tập[Athena] Nguyễn Nhật Nguyên - Báo cáo thực tập
[Athena] Nguyễn Nhật Nguyên - Báo cáo thực tậpnnn4194a
 
Cấu hình và bảo mật cho Ubuntu Server
Cấu hình và bảo mật cho Ubuntu Server Cấu hình và bảo mật cho Ubuntu Server
Cấu hình và bảo mật cho Ubuntu Server Ho Quang Thanh
 
Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952Ham Chơi
 
Asp.net mvc 3 (c#) (9 tutorials) egroups vn
Asp.net mvc 3 (c#) (9 tutorials)   egroups vnAsp.net mvc 3 (c#) (9 tutorials)   egroups vn
Asp.net mvc 3 (c#) (9 tutorials) egroups vnNguyen Van Hung
 
Technical note playframework_documentation_working with play - java_vn
Technical note playframework_documentation_working with play - java_vnTechnical note playframework_documentation_working with play - java_vn
Technical note playframework_documentation_working with play - java_vnAsahina Infotech
 

Similar to Lập trình background job bằng azurequeue và webjob sử dụng azure storage emulator (20)

Arrowjs.io
Arrowjs.ioArrowjs.io
Arrowjs.io
 
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSX
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSXHướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSX
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSX
 
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
 
Lập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biếnLập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biến
 
Devexpress cho asp.net
Devexpress cho asp.netDevexpress cho asp.net
Devexpress cho asp.net
 
Báo cáo tuần đồ án
Báo cáo tuần đồ ánBáo cáo tuần đồ án
Báo cáo tuần đồ án
 
WinEoP Framework
WinEoP FrameworkWinEoP Framework
WinEoP Framework
 
Introduce docker
Introduce dockerIntroduce docker
Introduce docker
 
Trần Anh Khoa - Kautilya và Powershell trong kỹ thuật tấn công tiếp cận
Trần Anh Khoa - Kautilya và Powershelltrong kỹ thuật tấn công tiếp cậnTrần Anh Khoa - Kautilya và Powershelltrong kỹ thuật tấn công tiếp cận
Trần Anh Khoa - Kautilya và Powershell trong kỹ thuật tấn công tiếp cận
 
Giới thiệu ASP.NET Core 2.0
Giới thiệu ASP.NET Core 2.0Giới thiệu ASP.NET Core 2.0
Giới thiệu ASP.NET Core 2.0
 
Sapo Microservices Architecture
Sapo Microservices ArchitectureSapo Microservices Architecture
Sapo Microservices Architecture
 
Kinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnKinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vn
 
giới thiệu về Asp.net core 2.0
giới thiệu về Asp.net core  2.0giới thiệu về Asp.net core  2.0
giới thiệu về Asp.net core 2.0
 
Apache+ q logs
Apache+ q logsApache+ q logs
Apache+ q logs
 
[Athena] Nguyễn Nhật Nguyên - Báo cáo thực tập
[Athena] Nguyễn Nhật Nguyên - Báo cáo thực tập[Athena] Nguyễn Nhật Nguyên - Báo cáo thực tập
[Athena] Nguyễn Nhật Nguyên - Báo cáo thực tập
 
Ch06
Ch06Ch06
Ch06
 
Cấu hình và bảo mật cho Ubuntu Server
Cấu hình và bảo mật cho Ubuntu Server Cấu hình và bảo mật cho Ubuntu Server
Cấu hình và bảo mật cho Ubuntu Server
 
Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952
 
Asp.net mvc 3 (c#) (9 tutorials) egroups vn
Asp.net mvc 3 (c#) (9 tutorials)   egroups vnAsp.net mvc 3 (c#) (9 tutorials)   egroups vn
Asp.net mvc 3 (c#) (9 tutorials) egroups vn
 
Technical note playframework_documentation_working with play - java_vn
Technical note playframework_documentation_working with play - java_vnTechnical note playframework_documentation_working with play - java_vn
Technical note playframework_documentation_working with play - java_vn
 

Lập trình background job bằng azurequeue và webjob sử dụng azure storage emulator

  • 1. Lập trình background job bằng Azure Queue và WebJob trên Azure Storage Emulator Nhu cầu: developer tham gia dự án sử dụng Azure mong muốn lập trình và chạy queue, webjob dưới localhost mà không cần phải đăng ký sử dụng azure Giải pháp: sử dụng Azure storage emulator Chung Vĩnh Khang chungvinhkhang@live.com
  • 2. Emulator Web server Queue Job request enqueue message trigger - dequeue Chuẩn bị: VS2013+ Azure SDK 2.9+ https://azure.microsoft.com/en-us/downloads/
  • 3. Demo • Tạo 1 solution bao gồm:  1 web app (asp.net)  1 web job • Start emulator • Cấu hình config: connection là “UseDevelopmentStorage=true;”
  • 4. Lập trình phần web push message xuống queue • Giả sử tên queue là myqueue (azure queue không cho viết hoa) • Implement 1 button, khi người dùng submit POST thì web thì push xuống queue 1 message từ input. Mình làm bằng webpage cho đơn giản, mọi người có thể áp dụng qua mvc, web api, signalr,… • Install azure storage library (7+): Install-Package WindowsAzure.Storage • Test trên web. Kết quả có thể kiểm tra bằng cách vào Cloud Explorer
  • 5. Lập trình phần job trigger khi queue có message • Mặc định khi tạo project webjob thì Microsoft.Azure.WebJobs 1.0.1.0 sẽ được add vào. Và trước giờ thư viện này không support trigger từ blob/queue dưới emulator vì 1 số lí do kĩ thuật. Tuy nhiên mới đây team azurewebjob sdk đã giải quyết. Và hiện tại chưa chính thức: • Muốn add thư viện đó, ta cần add them package source vào nugget. Rồi install thư viện webjobs 2.0.0 alpha • Có thể test bằng cách ghi ra console: Kết quả public static void ProcessQueueMessage([QueueTrigger("myqueue")] string message, TextWriter log ) { Console.WriteLine(message); }
  • 6. Bây giờ có thể mở web và console lên test cùng 1 lúc • Tips: để trigger nhanh hơn thì có thể set thời gian trong cấu hình JobHost: • Best Practice thực tế:  Không pass cả object lớn vào queue mà lưu xuống memory cache như redis hay db, chỉ pass id hoặc guid xuống queue. Job khi trigger sẽ query object theo id đó.  Phải kiểm tra webconfig xem có phải connection đang trỏ đến queue emulator hay development queue chưa mới test. Tránh để tình trạng 1 queue mà 2 job giống nhau subscribe và xử lý. Nguy hiểm nhất là subscribe vào cái production queue • 1 số ứng dụng thực tế: Bulk mail, mass notification, đồng bộ, backup/archive, etl, media processing, webhook, report, purge, batch import • 1 số công nghệ kết hợp / thay thế: Queue/Messaging: Amqp (rabbitmq, rocketmq, cloudamqp), azure service bus, msmq Job: Quartz .NET, windows background service, azure worker role Cache: Redis, memcache, ncache, azureblob, appfabric Lib: Nservicebus, hangfire, servicestack -HẾT-