- Tạo ứng dụng Spring Boot bằng Spring Launchizr
- Cấu hình Cassandra trong Spring Boot
- Định cấu hình nhóm kết nối Tomcat trên Spring Boot
- Định tuyến tin nhắn Camel đến Artemis được nhúng bằng WildFly
Trong hệ thống dựa trên Thông báo, mỗi Sự kiện cũng có thể được gọi là Thông báo là một bản tóm tắt Sự kiện ở cấp độ cao hơn. Mỗi Thông báo có một Loại cụ thể được sử dụng để liên kết với Trình xử lý tương ứng. Nó là một loại dữ liệu.
Thay đổi được sử dụng để nhận các tin nhắn được phân phối từ Vòng lặp sự kiện. Mỗi Kênh chịu trách nhiệm xử lý một loại tin nhắn. Đó là việc xử lý dữ liệu.
Chức năng của nó tương tự như Event Loop. Nó chủ yếu giúp Sự kiện tìm Kênh thích hợp và truyền đến Kênh đó. Nó là cầu nối giữa Sự kiện và Kênh.
Sự kiện là cách triển khai Tin nhắn đơn giản nhất trong lần sử dụng tiếp theo, Sự kiện có thể được sử dụng trực tiếp làm lớp cơ sở của các Tin nhắn khác.
EventDispatcher là cách triển khai cơ bản nhất của DynamicRouter, phù hợp để sử dụng trong tình huống đơn luồng, do đó không cần phải xem xét các vấn đề về an toàn luồng.
Kết nối các thành phần trên để hoàn thành bài kiểm tra.
gói được đồng bộ hóa; giao diện công cộng Message { // Trả về loại Message Class
gói synceda; giao diện công cộng Kênh { // Chịu trách nhiệm gửi tin nhắn void Dispatch(E tin nhắn);
package synceda; public giao diện DynamicRouter { // Đăng ký Kênh liên quan cho từng loại Thông báo. Chỉ khi tìm thấy Kênh phù hợp thì Thông báo mới được xử lý void registerChannel(Class messageType, Channel E> kênh); // Gán tin nhắn cho kênh void Dispatch(E message) tương ứng;
gói được đồng bộ hóa; lớp công khai Triển khai sự kiện Tin nhắn { @Override public Class
gói synceda; nhập java.util.HashMap; nhập java.util.Map; /** * @className: EventDispatcher * @description: Lớp này không phải là lớp an toàn theo luồng * @date: 2022/5/18 * @author : cakin */ public class EventDispatcher triển khai DynamicRouter{ // Được sử dụng để lưu mối quan hệ giữa Kênh và Tin nhắn riêng tư cuối cùng Map(); } @Override public void registerChannel(Class messageType, Channel kênh) { this.routerTable.put(messageType,channel) ; } @Override public void Clark(Message message) { if(routerTable.containsKey(message.getType())){ // Lấy trực tiếp Kênh tương ứng để xử lý Tin nhắn routerTable.get(message.getType()).dispatch(message); } else { ném MessageMatcherException("không thể khớp kênh cho loại ["+message.getType()+"]");
gói được đồng bộ hóa; lớp công khai MessageMatcherException mở rộng RuntimeException { public MessageMatcherException(String message) { super(message);
package synceda; public class EventDispatcherExample { // Hai thuộc tính X và Y được định nghĩa trong inputEvent, chủ yếu được sử dụng cho các phần tử trong các Kênh khác static class inputEvent mở rộng Event { private Final int x; int y) { this.x = x; this.y = y } public int getX() { return x } public int getY() { return y; } } // Sự kiện được sử dụng để lưu trữ kết quả lớp tĩnh ResultEvent mở rộng Sự kiện { public Final int result; public ResultEvent(int result) { this.result = result; } public int getResult() { return result } } // Process ResultEvent Handler (Kênh), chỉ cần xuất kết quả tính toán ra bảng điều khiển lớp tĩnh ResultEventHandler thực hiện Channel { @Override public void Dispatch(ResultEvent message) { System.out.println("Kết quả là: " + message.getResult()); } } // inputEventHandler cần gửi Sự kiện đến Bộ định tuyến, vì vậy lớp tĩnh Dispatcher cần được chuyển vào trong quá trình thực hiện xây dựng inputEventHandler triển khai Channel { bộ điều phối EventDispatcher cuối cùng riêng tư; public inputEventHandler(bộ điều phối EventDispatcher) { this.dispatcher = người điều phối; } //Tạo kết quả được tính toán thành một Sự kiện mới và gửi nó tới Bộ định tuyến @Override public voiddispatch(InputEvent message) { System.out.printf("X:%d,Y:%d\n " , message.getX(), message.getY()); int result = message.getX() + message.getY(); Dispatch(new ResultEvent(result)); } public static void main(String[] args) { EventDispatcher bộ điều phối = new EventDispatcher(); // Đăng ký mối quan hệ ràng buộc giữa Sự kiện và Trình xử lý (Kênh) với bộ điều phối DisPatcher.registerChannel(InputEvent.class, new inputEventHandler(dispatcher)); .registerChannel(ResultEvent.class, new ResultEventHandler()); bộ điều phối.dispatch(mới) Sự kiện đầu vào(1, 2)); } } }
X:1,Y:2
Kết quả là: 3
đóng cửa. Câu hỏi này cần tập trung hơn. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện vấn đề này? Câu hỏi được cập nhật để chỉ tập trung vào một vấn đề chỉnh sửa bài đăng này. Đã đóng 4 năm trước. Cải thiện câu hỏi này
.NET Framework:4.5.1 Tôi gặp phải một lỗi lạ trong Blend for visual studio 2015 và tôi không thể tìm thấy nguồn của nó. Nếu tôi mở giải pháp WPF của mình trong VS, nó sẽ tải và chạy tốt.
Tôi thường gặp câu hỏi này, rất giống với Thiết kế URL RESTful phân cấp Giả sử dịch vụ chỉ cung cấp cho người dùng tải tài liệu lên. POST, GET/tài khoản PUT, DELETE/a
Trong ứng dụng Rails, tôi sử dụng thiết kế để quản lý người dùng của mình, liên kết tôi sử dụng để hủy phiên không còn hoạt động. Nó đang hoạt động, bây giờ tôi đã thêm người quản lý sự kiện nhưng không có gì. Các liên kết của tôi là :delete, :clas
Tôi đã bị mắc kẹt hơn 24 giờ khi cố gắng làm theo các giải pháp khác được đăng ở đây nhưng tôi không thể làm cho nó hoạt động được. Tôi mới làm quen với Rails và cần trợ giúp! Tôi muốn làm cho trang/người dùng/chỉnh sửa của mình hoạt động để tôi có thể thay đổi người dùng một cách đơn giản
Devise sẽ không hết thời gian chờ cho người dùng nếu: người dùng đăng nhập, đóng tab và sau đó truy cập lại URL trong thời gian chờ + X phút. Người dùng vẫn đăng nhập. Thời gian chờ hoạt động tốt nếu tab được mở và sau đó được làm mới/nhấp. điều này có nghĩa
Tôi muốn sử dụng một thanh trượt như thế này. Tôi muốn thanh trượt điều chỉnh cho phù hợp dựa trên các giá trị được cung cấp cho nó. Cho đến nay tôi chỉ có thể áp dụng nền có hiệu ứng chuyển màu nhưng không thể có được hiệu ứng này. Xin hãy giúp tôi bằng cách cung cấp mã kiểu.
Bạn nên tạo một đối tượng yêu cầu/phản hồi cho mỗi phương thức hay một đối tượng cho mỗi dịch vụ? Nếu tôi sử dụng điều này trong tất cả các phương thức, tôi sẽ chỉ có 5 thứ khác nhau trong đối tượng yêu cầu dịch vụ của mình vì tôi sử dụng cùng một đầu vào cho hầu hết tất cả các phương thức. Đối tượng phản hồi sẽ chỉ có một từ điển
Tôi đang cố gắng lập mô hình tệp đính kèm cho các thực thể trong REST. Giả sử một thực thể bị lỗi có thể có nhiều phần đính kèm kèm theo. Mỗi tệp đính kèm có một mô tả và một số thuộc tính khác (thời gian sửa đổi lần cuối, kích thước tệp...). Bản thân tệp đính kèm là một tệp ở bất kỳ định dạng nào (jpeg, doc...)
Tôi có bảng sau: Blogs { BlogName } BlogPosts { BlogName, PostTitle } Bài đăng trên blog mô hình cả một thực thể và một mối quan hệ, không hợp lệ theo 6nf (theo khai báo thứ ba).
Nếu lớp A có tương tác duy nhất với mỗi lớp B, C và D, thì mã cho tương tác nên là A hay B, C và D? Tôi đang viết một trò chơi nhỏ trong đó nhiều đối tượng có thể tương tác duy nhất với các đối tượng khác. Ví dụ: nhấp chuột EMP
Dường như có một số nhầm lẫn về cách ghi nhớ rằng tôi đang làm việc với Omniauth. Theo wiki này, bạn cần bao gồm những điều sau đây trong OmniauthCallbacksController: Remember_me(user)
Vấn đề về thiết kế: Sử dụng các thành phần không an toàn theo luồng (bộ sưu tập, API,...) trong/với các thành phần đa luồng... Ví dụ: Thành phần 1: Máy chủ socket đa luồng gửi tin nhắn đến trình xử lý tin nhắn... Thành phần 2 : trình xử lý tin nhắn không an toàn theo luồng
Chúng tôi hiện đang thiết kế một ứng dụng RESTful. Chúng tôi quyết định sử dụng XML làm đại diện cơ sở của mình. Tôi có câu hỏi sau đây liên quan đến việc thiết kế/lập mô hình dữ liệu ứng dụng bằng XML. Các cách để mô hình hóa dữ liệu trong XML là gì? Bắt đầu lại từ đầu
Tôi đang thiết kế XSD mới để lấy thông tin điểm từ các đối tác kinh doanh. Đối với mỗi giao dịch, đối tác phải cung cấp giá trị điểm cho ít nhất một loại điểm. Tôi có những điều sau đây:
Cách tốt nhất để thiết kế API hỗ trợ nhiều phiên bản là gì. Làm cách nào để đảm bảo rằng ngay cả khi lược đồ dữ liệu của tôi thay đổi (những thay đổi nhỏ), người dùng API của tôi sẽ không bị ảnh hưởng? Bất kỳ lược đồ tham khảo, hướng dẫn nào cũng sẽ rất hữu ích. Câu trả lời hay nhấtMark Nottingh
đóng cửa. Câu hỏi này dựa trên ý kiến. Câu trả lời không được chấp nhận vào thời điểm này. Bạn muốn cải thiện câu hỏi này? Cập nhật câu hỏi để việc chỉnh sửa bài đăng này có thể trả lời nó bằng sự thật và trích dẫn. Đã đóng cửa 4 năm trước. cải tiến
Tôi muốn tạo một trang web bằng php hoạt động giống như https://www.bitcoins.lc/. Thật vậy, làm cách nào tôi có thể sử dụng lay trong php khi có cùng bố cục trên mỗi trang nhưng nội dung thay đổi khi bạn thay đổi liên kết/trang
Tôi có câu hỏi về cách viết Swing UI. Nếu tôi muốn tạo một phần mềm với một số tùy chọn, ví dụ như ở khung đầu tiên, tôi có ba nút (Mới, Tùy chọn, Thoát). Bây giờ, nếu người dùng nhấn vào nút mới, tôi muốn thay đổi toàn bộ nội dung trong khung sang nội dung khác.
Tôi đang cố gắng tìm hiểu và tìm hiểu các mẫu cũng như các phương pháp hay nhất để di chuyển một loạt vùng chứa Docker thuộc sở hữu của một ứng dụng sang Kubernetes. Những thứ như thiết kế Pod, phân phối, triển khai. Ví dụ: tôi có thể tạo một nhóm có một vùng chứa ứng dụng và web duy nhất trong đó, nhưng
Tôi là một lập trình viên xuất sắc, rất giỏi!