Add ECDSA signature verification and enhance ComboHandler functionality
- Integrated ECDSA for signature verification in ComboHandler. - Updated event emissions to include additional parameters for better tracking. - Improved gas tracking during execution of combo plans. - Enhanced database interactions for storing and retrieving plans, including conflict resolution and status updates. - Added new dependencies for security and database management in orchestrator.
This commit is contained in:
62
orchestrator/src/services/deadLetterQueue.ts
Normal file
62
orchestrator/src/services/deadLetterQueue.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import { query } from "../db/postgres";
|
||||
|
||||
interface DeadLetterMessage {
|
||||
messageId: string;
|
||||
originalQueue: string;
|
||||
payload: any;
|
||||
error: string;
|
||||
retryCount: number;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add message to dead letter queue
|
||||
*/
|
||||
export async function addToDLQ(
|
||||
queue: string,
|
||||
payload: any,
|
||||
error: string
|
||||
): Promise<void> {
|
||||
const messageId = `dlq-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
||||
|
||||
await query(
|
||||
`INSERT INTO dead_letter_queue (message_id, queue, payload, error, retry_count, created_at)
|
||||
VALUES ($1, $2, $3, $4, $5, $6)`,
|
||||
[messageId, queue, JSON.stringify(payload), error, 0, new Date().toISOString()]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get messages from DLQ for retry
|
||||
*/
|
||||
export async function getDLQMessages(queue: string, limit = 10): Promise<DeadLetterMessage[]> {
|
||||
const result = await query<DeadLetterMessage>(
|
||||
`SELECT * FROM dead_letter_queue
|
||||
WHERE queue = $1 AND retry_count < 3
|
||||
ORDER BY created_at ASC
|
||||
LIMIT $2`,
|
||||
[queue, limit]
|
||||
);
|
||||
|
||||
return result.map((row) => ({
|
||||
messageId: row.message_id,
|
||||
originalQueue: row.queue,
|
||||
payload: typeof row.payload === "string" ? JSON.parse(row.payload) : row.payload,
|
||||
error: row.error,
|
||||
retryCount: row.retry_count,
|
||||
createdAt: row.created_at,
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
* Increment retry count
|
||||
*/
|
||||
export async function incrementRetryCount(messageId: string): Promise<void> {
|
||||
await query(
|
||||
`UPDATE dead_letter_queue
|
||||
SET retry_count = retry_count + 1, updated_at = CURRENT_TIMESTAMP
|
||||
WHERE message_id = $1`,
|
||||
[messageId]
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user